加入收藏
最新动态
最新动态
Linux

分享Linux监控报警文件修改的解决方案

来源:未知 作者:admin 人气: 时间:2014-02-07
基本需求是需要监控"/root/global.cfg"这个文件,如果一旦发现文件更改,就发送一份邮件给我手机的139邮箱,然后手机上面就会收到相应的短信提示。

分享Linux监控报警文件修改的解决方案。大致情况是生产用的系统,想做一个文件修改邮件报警,但不知道如何写脚本,大致想法是如果文件一被修改,即发送一封邮件到指定的邮箱。

基本需求是需要监控"/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”文件中。

目前这几个脚本基本能实现我所需要的功能,但是写脚本的确不是小弟的强项,很多东西是根据网上的内容拼凑起来的。
所以我的问题是,有没有高手能够指点下这几个脚本怎么优化下,并且这样写对服务器会不会有其他的什么影响。

上一篇:没有了
下一篇:个人觉得学习linux的话推荐ubuntu
  • 用友
  • IBM
  • oracle
  • 联想
  • 华为
  • 思科
  • 公司地址:广州市天河区燕岭路95号四楼404室A20 邮编:510000
    电话:020-31600147 传真:020-31600147
      Copyright © 2015-2024 yunyuns.cn 云云(广州)科技有限公司 版权所有 ICP备13000495号-10