Net SSH Ожидайте вывод на печать - PullRequest
1 голос
/ 27 ноября 2011

Мой код, как показано ниже

use Net::SSH::Expect;

my $ssh = Net::SSH::Expect->new (
            host => "$node_name",
            user => 'admin',
            timeout => 10,
            raw_pty => 1,
            );

$ssh->run_ssh() or die "SSH process couldn't start: $!";

$ssh->waitfor('password: ');

$ssh->send("$password");

$ssh->waitfor('mml> ');

@ls=$ssh->exec("$command");

print @ls;

#BREAK1: At this point remote device ask for "Press Enter to continue..." because output is more than one page..that is why below code

while ($ssh->waitfor('continue')) {
$line=$ssh->send("\n");
print $line;
}

Я хочу напечатать весь захваченный вывод, однако он печатает только тот, который захвачен @ls=$ssh->exec("$command");, и не печатает ничего, что захвачено кодом ниже BREAK1.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2015

добавить $ssh->exec("stty raw -echo");

0 голосов
/ 27 ноября 2011

Perldoc модуля рекомендует следующее, если вывод велик:

 # When running a command that causes a huge output,
 # lets get the output line by line:
 $ssh->send("find /");   # using send() instead of exec()
 my $line;
 # returns the next line, removing it from the input stream:
 while ( defined ($line = $ssh->read_line()) ) {
     print $line . "\n";
 }

Также обратите внимание, что send () не должен ничего возвращать, вы должны использовать read_line () или read_all (). Модуль документа

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