使用SSH实时记录到文件?

时间:2015-03-30 16:38:12

标签: perl ssh

my $file = 'log.log';
my $cmd = 'sysstat';
my $ssh = Net::SSH::Perl->new($host);
$ssh->login('admin', 'password');

open my $in, "-|", ($ssh->cmd($cmd))[0];
open my $out_fh, ">", $file;
#print+($ssh->cmd($cmd))[0]."\n";
while (my $line = <$in>) {
    print { $out_fh } $line;
}

有关如何实时将ssh输出记录到文件的任何建议? $ cmd将永远运行,我希望它吐出的每一行都能实时写入文件。

1 个答案:

答案 0 :(得分:1)

你不能用Net :: SSH :: Perl做到这一点......好吧,至少不容易!

改为使用Net::OpenSSH

$ssh = Net::OpenSSH->new($host, user => $user, password => $password);
$ssh->system({stdout_file => $file}, $cmd);