perl 批量监控主机ping

来源:互联网 发布:三网合一源码 编辑:程序博客网 时间:2024/04/20 02:47
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   = 'zhao.yangjian@163.com';    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;      $infoCONTENT    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('zhaoyangjian@xx.cn', "$host is lost");        }; }

0 0