use HTTP::Date qw(time2iso str2time time2iso time2isoz); use Net::Ping; use Socket; use Net::SMTP; sub send_mail{ if (@_ != 2){print "请输入2个参数\n";exit 1}; ($m,$n) = @_; #将参数赋值给变量 my $to_address = $m; my $CurrTime = time2iso(time()); my $to_address = $m; my $mail_user = '[email protected]'; my $mail_pwd = 'xxxxxxxxxx'; my $mail_server = 'smtp.163.com'; my $from = "From: $mail_user\n"; my $subject = "Subject: zjcap info\n"; 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("\n\n"); $smtp->datasend("$message\n"); # set content $smtp->dataend(); $smtp->quit(); }; my @array=( '1.1.1.1', '2.2.2.2' ); my $CurrTime = time2iso(time()); foreach $host (@array){ $p = Net::Ping->new("icmp"); if ($p->ping($host,2)) { open (A, ">>/home/scan/sbin/ping-z.log"); print A ("$CurrTime---$host is active.\n"); } else { open (B ,">>/home/scan/sbin/ping-z.log"); print B ("$CurrTime---$host is lost.\n") ; send_mail('[email protected]', "$host is lost"); }; }