perl系统文件监控脚本

script 说明:

创新互联是一家专业提供新晃企业网站建设,专注与成都网站建设、网站建设、HTML5、小程序制作等业务。10年已为新晃众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

该脚本可以对指定的系统重要文件进行监控,当文件被查看或修改后,脚本会查看最近登陆系统的用户和IP,并发邮件通知。


  1. #!/usr/bin/perl 
  2. use strict; 
  3. use Mail::Sender; 
  4. use Digest::SHA; 
  5. my @files=('/etc/passwd', '/etc/shadow', '/var/log/wtmp'); 
  6. my $last_cmd=`last -2`; 
  7.  
  8. while (1) { 
  9.         my %md5_res; 
  10.         my %output; 
  11.         my @change; 
  12.         foreach my $file (@files) { 
  13.                 $md5_res{$file}=MD5_digest($file); 
  14.         }; 
  15.                 while(1) { 
  16.                         sleep 10; 
  17.                         foreach my $file (@files) { 
  18.                                 if ($md5_res{$file} ne MD5_digest($file)) { 
  19.                                         $output{$file}="$file is changed"; 
  20.  
  21.                                 }; 
  22.                         }; 
  23.                         if (%output) { 
  24.                                 foreach my $key (%output) { 
  25.                                        print "$output{$key}\n"; 
  26.  
  27.                                 } 
  28.                                 print "$last_cmd"; 
  29.                                 last; 
  30.                         }; 
  31.                 }; 
  32. }; 
  33.  
  34. sub MD5_digest { 
  35.         my $file=shift; 
  36.         my $sha=Digest::SHA->new('256'); 
  37.         $sha->addfile($file); 
  38.         my $digest=$sha->hexdigest; 
  39.         return "$digest"; 
  40.  
  41.  
  42.  
  43. sub Send_mail { 
  44.         my($subject,$msg)=@_; 
  45.         my $sender=new Mail::Sender->MailMsg({ 
  46.          smtp => 'mail.aaa.com', 
  47.          from => 'neo@aaa.com', 
  48.          to =>'neo@gmail.com', 
  49.          subject => $subject, 
  50.          msg => $msg, 
  51.          auth => 'LOGIN', 
  52.          authid => 'neo', 
  53.          authpwd => '1234',} 
  54.         ) or die "$Mail::Sender::Error\n"; 
  55.         print "Mail sent ok"; 

 


分享名称:perl系统文件监控脚本
转载来于:http://azwzsj.com/article/jhcscd.html