使用Perl的Net::SSH::Except
,有一个名为read_line
的方法,它允许我读取输出的每一行。
我想使用Net::OpenSSH
但我找不到类似的东西。
如何使用SSH::Except
编写此OpenSSH
方法?
$ssh->send("ls\r\n");
while ( defined( $line = $ssh->read_line() ) {
# do something
}
答案 0 :(得分:4)
Net :: OpenSSH模块提供捕获方法,捕获所有输出。如果在列表上下文中调用将逐行返回输出
use strict;
use warnings;
use Net::OpenSSH;
my $host = "localhost";
my %opts = (
user => 'cdoyle',
password => 'thisisnottherealpassword',
);
my $ssh = Net::OpenSSH->new($host, %opts);
my @output = $ssh->capture('ls -lrta');
my $count=0;
foreach my $line (@output){
$count++;
print "line $count $line";
}
给出输出
line 1 total 28
line 2 -rw------- 1 cdoyle users 73 Jun 11 2015 .Xauthority
line 3 -rw------- 1 cdoyle users 602 Jun 11 2015 .viminfo
line 4 -rw-r--r-- 1 cdoyle users 32 Jun 11 2015 .profile
line 5 drwxr-xr-x 2 cdoyle users 4096 Jun 11 2015 .
line 6 -rw------- 1 cdoyle users 682 Aug 20 2015 .sh_history
line 7 drwxr-xr-x 32 root root 4096 Feb 21 02:33 ..