代码
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它时,在我真正结束这个过程之前,我无法看到我的输出。
我可以使用类似冲洗的概念吗?
答案 0 :(得分:1)
似乎register_handler
方法允许对输出进行非阻塞处理。
答案 1 :(得分:0)
您也可以使用Net::OpenSSH代替Net :: SSH :: Perl:
use Net::OpenSSH;
my $ssh = Net::OpenSSH->new($host, user => $user, password => $pass);
$ssh->system($cmd);