use Win32::Process::Info;
while (1==1){
use Sys::Hostname;
use HTTP::Date qw(time2iso str2time time2iso time2isoz);
use Net::SMTP;
if ( $#ARGV < 1 ){
print "please input 程序目录 程序名!
";
exit(-1);
};
open( FILE, "<", "mail.conf" );
my @temp=<FILE>;
foreach (@temp) {
chomp $_;
($name,$passwd,$server,$send) = split(/s+/,$_);
};
close FILE;
sub send_mail{
if (@_ != 2){print "请输入2个参数
";exit 1};
($m,$n) = @_; #将参数赋值给变量
my $to_address = $m;
my $CurrTime = time2iso(time());
my $to_address = $m;
my $mail_user = "$name";
my $mail_pwd = "$passwd";
my $mail_server = "$server";
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();
};
my $pi=Win32::Process::Info->new({assert_debug_priv => 1});
my @processinfo ='';
my @arr1='';
my $var='';
my @processinfo = $pi->GetProcInfo();
foreach my $process (@processinfo){
print join(':',$process->{'Name'},$process->{'ProcessId'},
$process->{'Owner'}),"
";
$var=$process->{'Name'};
##将进程名放入数组
push @arr1,$var;
}
print "----------------------
";
$proc="$ARGV[1]";
print "$proc is $proc
";
$dir="$ARGV[0]";
print "$dir is $dir
";
#"C:Program Files (x86)360360Safe360Safe.exe"
if (grep m/$proc/i,@arr1 ){print "$proc is running
"}
else{ print "$proc is not running
",chdir $dir,
#else{ print "$proc is not running
",chdir $dir,
system("start $proc"),send_mail($name,"$send is lost")
};}
sleep(5);
zhaoyangjian@zjcap.cn xxxx smtp.exmail.qq.com "xx serivce is down"