Я создаю сценарий 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 или я что-то делаю ужасно неправильно?