Как я могу прочитать вывод из истинного процесса в консоли? - PullRequest
0 голосов
/ 26 ноября 2011

для кода

my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
print "STDOUT: $stdout STDERR: $stderr EXIT: $exit";

Если у меня $ cmd "ls", то у $ stdout может быть правильный вывод.

Однако, если мой $ cmd имеет значение «perl whileTrue.pl», то как я могу получить вывод при запуске perl? В whileTrue.pl он напечатает мой ввод в консоли.

Потому что, если я не ssh для его запуска, вывод будет выведен на консоль. Однако, когда я ssh, я не могу видеть свои выходные данные, пока я действительно не закончу этот процесс.

Могу ли я иметь что-то вроде концепции флеша?

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Похоже, register_handler метод позволяет неблокирующую обработку вывода.

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

Вы также можете использовать Net :: OpenSSH вместо Net :: SSH :: Perl:

use Net::OpenSSH;
my $ssh = Net::OpenSSH->new($host, user => $user, password => $pass);
$ssh->system($cmd);
...