千家信息网

perl 系统文件监控脚本

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,script 说明:该脚本可以对指定的系统重要文件进行监控,当文件被查看或修改后,脚本会查看最近登陆系统的用户和IP,并发邮件通知。#!/usr/bin/perluse strict;use Mail
千家信息网最后更新 2025年01月20日perl 系统文件监控脚本

script 说明:

该脚本可以对指定的系统重要文件进行监控,当文件被查看或修改后,脚本会查看最近登陆系统的用户和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. while (1) {
  8. my %md5_res;
  9. my %output;
  10. my @change;
  11. foreach my $file (@files) {
  12. $md5_res{$file}=MD5_digest($file);
  13. };
  14. while(1) {
  15. sleep 10;
  16. foreach my $file (@files) {
  17. if ($md5_res{$file} ne MD5_digest($file)) {
  18. $output{$file}="$file is changed";
  19. };
  20. };
  21. if (%output) {
  22. foreach my $key (%output) {
  23. print "$output{$key}\n";
  24. }
  25. print "$last_cmd";
  26. last;
  27. };
  28. };
  29. };
  30. sub MD5_digest {
  31. my $file=shift;
  32. my $sha=Digest::SHA->new('256');
  33. $sha->addfile($file);
  34. my $digest=$sha->hexdigest;
  35. return "$digest";
  36. }
  37. sub Send_mail {
  38. my($subject,$msg)=@_;
  39. my $sender=new Mail::Sender->MailMsg({
  40. smtp => 'mail.aaa.com',
  41. from => 'neo@aaa.com',
  42. to =>'neo@gmail.com',
  43. subject => $subject,
  44. msg => $msg,
  45. auth => 'LOGIN',
  46. authid => 'neo',
  47. authpwd => '1234',}
  48. ) or die "$Mail::Sender::Error\n";
  49. print "Mail sent ok";
  50. }
0