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将永远运行,我希望它吐出的每一行都能实时写入文件。
答案 0 :(得分:1)
你不能用Net :: SSH :: Perl做到这一点......好吧,至少不容易!
改为使用Net::OpenSSH:
$ssh = Net::OpenSSH->new($host, user => $user, password => $password);
$ssh->system({stdout_file => $file}, $cmd);