1

代码

#!/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
在 ./mytest.pl 第 14 行,<GEN0> 第 1 行的字符串 eq 中使用未初始化的值
4

1 回答 1

0

在 perl 中, eq 用于字符串, == 用于数字,仅供参考!

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

试试这个测试:

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

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

现在,您为什么要尝试捕获出口 0 以及为什么在它发生时您还在睡觉?

于 2012-07-03T20:11:20.427 回答