使用Net :: SSH2检索命令的输出

时间:2017-11-17 04:59:55

标签: perl ssh

我正在尝试使用Strawberry Perl从Windows主机使用Perl模块Net :: SSH2在网络设备上连接和执行命令。脚本能够连接和验证,也执行命令,但在读取通道时它是卡在 while()行(提示继续闪烁),它既不会从通道中出来,也不会打印通道数据。

我每次都要使用Ctrl + C来杀死进程。当我终止进程时,我在提示符处出现以下错误。

Can'UNKNOWN串联串联(。)或字符串C:/Strawberry/perl/vendor/lib/Net/SSH2/Channel.pm第132行

同样的代码适用于其他主机,而少数主机则失败。我无法确定问题是什么。

use Net::SSH2;
use strict;

my $ssh = Net::SSH2->new();

$ssh->connect('xx.xx.xx.xx');

$ssh->auth(username => 'xxxxxx', password => 'xxxxx');

my  $channel = $ssh->channel() or do { print" [LOG ERROR]: Failed to create channel. Exiting ...\n"};

$channel->blocking(0);

$channel->shell() ;

sleep(5);

my $cmd='df -h';

print $channel "$cmd\n";        

sleep(5);      

while(<$channel>)
  {
     print $_;
  }


$channel->close(); 

$ssh->disconnect();

0 个答案:

没有答案