Perl Net :: SSH2 висит на канале () - PullRequest
0 голосов
/ 28 марта 2012

Я создаю сценарий Perl для отправки команд в систему с использованием SSH2. Это не стандартная оболочка Linux, а собственная оболочка. Он не принимает команды через команду SSH (команда user@192.168.1.2), но ему нужно сначала подключиться, а затем давать ему команды, как оболочка.

Я придумал следующий скрипт:

#!/usr/bin/perl

use Net::SSH2;

my $host = "192.168.1.2";
my $user = "admin";
my $password = "";

#-- set up a new connection
my $ssh = Net::SSH2->new();
$ssh->connect($host);

#-- authenticate
$ssh->auth_password($user, $password);

#-- creating a channel
my $channel = $ssh->channel();

#-- running a command
$channel->exec("xstatus");

#-- Closing the connection
$channel->close;
$ssh->disconnect;

Однако проблема в том, что он висит в строке '$ ssh-> channel ()'. Есть ожидающее приглашение, которое не исчезнет. Я попытался удалить все строки под ним, но проблема остается. Когда я удаляю строку channel (), она запускается мгновенно. Это ошибка в модуле Net :: SSH2 или я что-то делаю ужасно неправильно?

1 Ответ

0 голосов
/ 02 августа 2015

Per @ user1269955: Я понял это.Нужно было заменить «auth_password» на «auth_keyboard» для интерактивного входа с клавиатуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...