[root@redis01 sbin]# cat test.pl
use Redis;
use Sys::Hostname;
use HTTP::Date qw(time2iso str2time time2iso time2isoz);
use Net::SMTP;
sub basic() {
$host = hostname;
@lines=qx|/sbin/ifconfig|;
@ip;
print "-" x 80 ."
";
foreach(@lines){
if(/inet addr:([d.]+)/){
push @ip,$1 unless $1 =~ /A127.0.0.1z/;
}
}
print "${yellow}HOST: $host => IP: @ip$normal
";
print "-" x 80 ."
";
};
&basic();
sub send_mail{
if (@_ != 2){print "error
"};
($m,$n) = @_;
my $to_address = $m;
my $CurrTime = time2iso(time());
my $to_address = $m;
my $mail_user = 'zhaoyangjian@zjcap.cn';
my $mail_pwd = 'xxxxxx';
my $mail_server = 'smtp.exmail.qq.com';
my $from = "From: $mail_user
";
my $subject = "Subject: zjcap info
";
my $info = "$CurrTime--$n";
my $message = <<CONTENT;
$info
CONTENT
my $smtp = Net::SMTP->new($mail_server);
$smtp->auth($mail_user, $mail_pwd) || die "Auth Error! $!";
$smtp->mail($mail_user);
$smtp->to($to_address);
$smtp->data(); # begin the data
$smtp->datasend($from); # set user
$smtp->datasend($subject); # set subject
$smtp->datasend("
");
$smtp->datasend("$message
"); # set content
$smtp->dataend();
$smtp->quit();
};
$var;
my $r = Redis->new( server => "127.0.0.1:6379",reconnect => 1,every=>60) or (die "can't connect to redis");
$r = Redis->new( password => 'xx' );
$var=$r->get('test');
print "$var is $var
";
$r->quit;
print "qaxwscedv
";
print "$var
";
if ( defined($var) ){print "redis could connetct
"}
else
{print "redis is lost",send_mail('zhaoyangjian@zjcap.cn',"@ip-redis is lost
")};
[root@redis01 sbin]# perl test.pl
--------------------------------------------------------------------------------
HOST: redis01 => IP: 10.51.35.244 120.26.137.80
--------------------------------------------------------------------------------
Redis server refused password at /usr/local/share/perl5/Redis.pm line 430
Redis::__ANON__('[auth] ERR invalid password, at /usr/local/share/perl5/Redis...') called at /usr/local/share/perl5/Try/Tiny.pm line 104
Try::Tiny::try('CODE(0x1ced1e0)', 'Try::Tiny::Catch=REF(0x1fa9c40)') called at /usr/local/share/perl5/Redis.pm line 431
Redis::__build_sock('Redis=HASH(0x213d5e0)') called at /usr/local/share/perl5/Redis.pm line 402
Redis::__connect('Redis=HASH(0x213d5e0)') called at /usr/local/share/perl5/Redis.pm line 68
Redis::new('Redis', 'password', 'r,uLgt.313xx') called at test.pl line 51
程序崩溃,没有往下面运行:
加上eval后,
eval{
my $r = Redis->new( server => "127.0.0.1:6379",reconnect => 1,every=>60) or (die "can't connect to redis");
$r = Redis->new( password => 'xx' );
$var=$r->get('test');
print "$var is $var
";
$r->quit;
};
[root@redis01 sbin]# perl test.pl
--------------------------------------------------------------------------------
HOST: redis01 => IP: 10.51.35.244 120.26.137.80
--------------------------------------------------------------------------------
qaxwscedv
redis is lost1[root@redis01 sbin]#