尝试使用退出代码时出现Net SSH Perl错误

时间:2012-07-03 19:21:23

标签: perl ssh

CODE

#!/usr/bin/perl -w
use strict;
use warnings;
use Net::SSH::Perl;

my $ssh_to="10.1.1.9";
my @KEYFILE = ("/home/nagios/.ssh/id_dsa.pub");
my $local="10.1.1.5";
my $vip_ip="10.1.1.50:80";

my $remove  = "/usr/bin/sudo /sbin/ipvsadm -e -t $vip_ip -r $local -w 0";
my $ssh = Net::SSH::Perl->new($ssh_to, identity_files=>\@KEYFILE);
my ($stdout, $stderr, $exit) = $ssh->cmd($remove);
if ( $exit eq 0) { sleep(300); }

输出

[root@host]# ./mytest.pl
Use of uninitialized value in string eq at ./mytest.pl line 14, <GEN0> line 1

1 个答案:

答案 0 :(得分:0)

在perl中,eq用于字符串,==用于数字,只是一个FYI!

您收到错误,因为未定义$ exit。

试试这个测试:

if ( defined( $exit) && ( $exit== 0 ) ) {
    sleep( 300 );
}

这将忽略非错误($ exit is undef)并在$ exit = 0时休眠

现在,你为什么试图捕获0号出口,为什么它会在它发生时睡觉?