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 の場合はスリープします。

では、なぜ exit 0 をトラップしようとしているのですか。

于 2012-07-03T20:11:20.427 に答える