【Perl脚本】找出日志中的错误信息并发送邮件

脚本功能:

脚本使用Perl来实现,读取/var/log/messages(也可以是其他日志文件)日志文件,从里面找出error或者warn的行,然后发送邮件。

第一次读取的时候,会记录读取的位置,下次读取的时候会从上次读取的位置的开始读取,如果没有发现error或warn行,则不发邮件
 
相关附件下载地址:
 

具体下载目录在 /2012年资料/11月/29日/【Perl脚本】找出日志中的错误信息并发送邮件

 

脚本使用说明:

1.需要的Perl模块
Net::SMTP //perl自带,不用安装
Socket //perl自带,不用安装
Sys::Hostname //perl自带,不用安装
Authen::SASL (用使来验证邮件用户名和密码) //需要安装
使用root身份用如下命令来安装Authen::SASL模块:
  1. root@server ~]# cpan Authen::SASL
  2. If you do not want to enter a dialog now, you can answer 'no' to this
  3. question and I'll try to autoconfigure. (Note: you can revisit this
  4. dialog anytime later by typing 'o conf init' at the cpan prompt.)
  5. Are you ready for manual configuration? [yes] no //如果有该步骤的话,选择no,自动配置
  6. 中间省略。。。
  7. Checking if your kit is complete...
  8. Looks good
  9. Warning: prerequisite Digest::HMAC_MD5 0 not found.
  10. Warning: prerequisite ExtUtils::MakeMaker 6.42 not found. We have 6.30.
  11. Writing Makefile for Authen::SASL
  12. ---- Unsatisfied dependencies detected during [G/GB/GBARR/Authen-SASL-2.15.tar.gz] -----
  13. Digest::HMAC_MD5
  14. ExtUtils::MakeMaker
  15. Shall I follow them and prepend them to the queue
  16. of modules we are processing right now? [yes] yes
  17. Running make install
  18. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL.pm
  19. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL.pod
  20. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl.pm
  21. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl.pod
  22. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/EXTERNAL.pm
  23. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/CRAM_MD5.pm
  24. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/DIGEST_MD5.pm
  25. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/PLAIN.pm
  26. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/ANONYMOUS.pm
  27. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/LOGIN.pm
  28. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/GSSAPI.pm
  29. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/EXTERNAL.pm
  30. Installing /usr/lib/perl5/site_perl/5.8.8/Authen/SASL/Perl/CRAM_MD5.pm
  31. Installing /usr/share/man/man3/Authen::SASL::Perl.3pm
  32. Installing /usr/share/man/man3/Authen::SASL::Perl::LOGIN.3pm
  33. Installing /usr/share/man/man3/Authen::SASL::Perl::CRAM_MD5.3pm
  34. Installing /usr/share/man/man3/Authen::SASL::Perl::ANONYMOUS.3pm
  35. Installing /usr/share/man/man3/Authen::SASL.3pm
  36. Installing /usr/share/man/man3/Authen::SASL::Perl::EXTERNAL.3pm
  37. Installing /usr/share/man/man3/Authen::SASL::Perl::GSSAPI.3pm
  38. Installing /usr/share/man/man3/Authen::SASL::Perl::PLAIN.3pm
  39. Installing /usr/share/man/man3/Authen::SASL::Perl::DIGEST_MD5.3pm
  40. Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
  41. /usr/bin/make install -- OK 看到这里就表示安装完成。
 
测试模块是否安装:
  1. [root@server1 ~]# perl -e "use Authen::SASL"

  2. [root@server1 ~]# //什么也不显示表明模块已经正确安装了。

  3. [root@server1 ~]# perl -e "use Net::SMTP"

  4. [root@server1 ~]#

  5. [root@server1 ~]# perl -e "use Socket"

  6. [root@server1 ~]#

  7. [root@server1 ~]# perl -e "use Sys::Hostname"

  8. [root@server1 ~]#

2.需要ROOT身份运行该脚本,如果读取的是 /var/log/messages这个日志文件  
3.可以设置为计划任务,自定义运行时间,如:每30分钟运行一次  
4.服务器需联网才能发送邮件 
5.如果有防火墙请放开25端口:
  1. iptables -A INPUT -p tcp --sport 25 -j ACCEPT
  2. iptables -A OUPUT -p tcp --dport 25 -j ACCEPT
6.一些测试数据  测试数据请下载附件    测试的时候第一次测试会创建/var/log/last_messages.linenumber文件, 第二次测试的时候 需要把该文件清空,或者在/var/log/messages增加一些错误的行,这样才可以测试出效果
7.有什么不对的地方请留言或者发送邮件([email protected])   8.发送邮件效果如下:

【Perl脚本】找出日志中的错误信息并发送邮件

相关推荐