windows 守护进程

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 程序目录 程序名!\n";
                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个参数\n";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\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 $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'}),"\n";
				 $var=$process->{'Name'};
				 ##将进程名放入数组
			     push @arr1,$var;

				 }
				 print "----------------------\n";
				
	
	
$proc="$ARGV[1]";

print "\$proc is $proc\n";

$dir="$ARGV[0]";

print "\$dir is $dir\n";
#"C:\Program Files (x86)\360\360Safe\360Safe.exe"

if (grep m/$proc/i,@arr1 ){print "$proc is running\n"}
  
  else{ print "$proc is not running\n",chdir $dir,
    #else{ print "$proc is not running\n",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"

posted @ 2016-09-14 12:00  czcb  阅读(182)  评论(0编辑  收藏  举报