• 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 程序目录 程序名!
    ";
                    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"

  • 相关阅读:
    AutoCAD如何添加网络打印机 添加公司打印机
    AutoCAD如何方便截图放到Word文档,改成白底黑字
    AutoCAD如何倒角 倒圆角 倒直角
    [RxJS] Groupby operator
    [VSCode] Custom settings
    [TypeScript] Modifier
    [Javascript] Avoid Accidental Returns of New State by using the void Keyword
    动态创建选项卡
    eclipse运行内存不足解决办法
    使用jquery trigger 触发a标签的click事件取代window.open方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350264.html
Copyright © 2020-2023  润新知