我正在尝试使用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();