+ -
当前位置:首页 → 问答吧 → Net::SSH::W32Perl CMD执行无返回 求助

Net::SSH::W32Perl CMD执行无返回 求助

时间:2010-07-16

来源:互联网

代码如下:

#!/usr/bin/perl
use Net::SSH::W32Perl;
   
my $host = 'x.x.x.x';
my $ssh = new Net::SSH::W32Perl($host);
$ssh->login('XXX', XXX);
my ($out, $err, $exit) = $ssh->cmd('show vlan brief');

print $out;
print $err;
print $exit;

情况1:
确保IP,用户名,密码都正确,执行结果:
Use of uninitialized value $out in print at ...
Use of uninitialized value $err in print at ...
Use of uninitialized value $exit in print at ...

情况2:
故意写错IP,执行结果:
Can't connect to 10.17.14.184: Unknown error

情况3:
确保IP正确,故意写错用户名,密码,执行结果:
Permission denied at  ...

有以上可以推断,连接到登陆应该都是对了的,可是为什么执行命令后没有任何的返回结果呢? 请各位高手指点。

作者: suxiaochen   发布时间: 2010-07-16

顶下楼主,遇到同样的问题,求解中。。。
代码如下:
#!/usr/bin/perl -w
use strict;
use Net::SSH::W32Perl;

my $port = "22";
my $ip = "192.168.1.1";
my $timeout = "15";
my $login = "192.168.254.254\@admin:abcd";
        
        
        
my $user = "admin";
my $pw = "abcd";
my $lines;
        
my $cmd="ls\n";
        
my $result  = "login_NOK";
eval {
        my $ssh = new Net::SSH::W32Perl($ip);
        $ssh->login( $user, $pw );
                #my ($out, $err,$exit) = $ssh->cmd('sh');
                #print "outout\n";
                # sleep(3);
                #my @lines=$ssh->cmd("fast sw-version read";
                #print "@lines\n";
      $ssh = undef;
                };
if  ($@) { print "$@\n";print "SSH login Failed\n"; }
        #elsif(!defined $lines) { print "SSH login Failed....\n"; }
else{ $result = "login_OK"; }
       
print "$result\n";

单独只LOGIN肯定能成功,因为终端只允许一个USER登录,如果执行命令则无响应,一直停止在第一个$ssh->cmd。。

作者: yinpenghero   发布时间: 2010-08-31