- 论坛徽章:
- 0
|
本帖最后由 pp12416 于 2012-02-09 16:33 编辑
得前面几位兄弟的提示,小弟查了些资料,搞出了下面的几个脚本,基本能实现需求,但写脚本我确实不在行,贴出来求高手指点为谢。
基本需求是需要监控"/root/global.cfg"这个文件,如果一旦发现文件更改,就发送一份邮件给我手机的139邮箱,然后手机上面就会收到相应的短信提示。我用到的解决办法是:
第一个脚本:使用"inotifywait“实时监控这个文件的修改,如果一旦发现文件变动,就将结果追加写入到"/backup/tmp.txt” 这个文件中。
- #!/bin/bash
- /usr/local/bin/inotifywait --timefmt '%Y%m%d%H%M%S' --format '%T,%w%f,%e' -mrqe modify,attrib,move,close_write,create,delete,delete_self /root/global.cfg >> /backup/tmp.txt
复制代码 第二个脚本:使用md5sum工具实时监控"/backup/tmp.txt” 这个文件,如果一旦发现文件MD5值变动,即调用第三个脚本,自动发信给139邮箱,同时还会更新"/backup/tmp.txt” 这个文件的MD5值。
- #!/bin/bash
- while true
- do
- old=`/bin/cat /backup/md5.db | awk '{print $1}'`
- new=`/usr/bin/md5sum /backup/tmp.txt | awk '{print $1}'`
- if [ "$old" != "$new" ]
- then
- /backup/sendmail.py >& /dev/null
- echo "$new" > /backup/md5.db
- fi
- sleep 1
- done
复制代码 第三个脚本:发送邮件的脚本。
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- from email.MIMEText import MIMEText
- import smtplib
- #邮箱参数配置
- mail_host="smtp.163.com"
- mail_user="######"
- mail_pass="######"
- mail_postfix="163.com"
- def send_mail(to_list,sub,content):
- me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
- msg = MIMEText(content)
- msg['Subject'] = sub
- msg['From'] = me
- msg['To'] = ";".join(to_list)
- try:
- s = smtplib.SMTP()
- s.connect(mail_host)
- s.login(mail_user,mail_pass)
- s.sendmail(me, to_list, msg.as_string())
- s.close()
- return True
- except Exception, e:
- print str(e)
- return False
- if __name__ == '__main__':
- mailto_list=["13476######@139.com"]
- if send_mail(mailto_list,"Maybe the system failovered ,please check immediately !"):
- print "successed!"
- else:
- print "failed!"
-
复制代码 最后再将前面两个脚本写入到开机脚本“/etc/rc.d/rc.local”文件中。
目前这几个脚本基本能实现我所需要的功能,但是写脚本的确不是小弟的强项,很多东西是根据网上的内容拼凑起来的。
所以我的问题是,有没有高手能够指点下这几个脚本怎么优化下,并且这样写对服务器会不会有其他的什么影响。
再次感谢楼上所有兄弟的指点。 |
|