Linux 如何使用脚本监控重要的文件内容是否被修改

Linux 如何使用脚本监控重要的文件内容是否被修改
本文以监控“定时计划任务”var/spool/cron目录下的文件为例,实现当root、hzsis等文件发生改变时会自动备份原文件并以邮件方式发送给相关人员。(前提需要系统已经搭建好邮箱系统)

首先,需要先建立管控的文件:/usr/home/EDP/monitorjob.lst

[root@vm ]$ cat  /usr/home/EDP/monitorjob.lst
root
hzsis

创建对比的文件如下,主要用于与/var/spool/cron下的root及hzsis作比较判断,并且也是首次对监控文件做备份。
/var/spool/cron/bak/root.last
/var/spool/cron/bak/hzsis.last

[root@vm ]$ cd /var/spool/cron
[root@vm ]$ mkdir -p /var/spool/cron/bak
[root@vm cron]$ cp -p root /var/spool/cron/bak/root.last
[root@vm cron]$ cp -p hzsis /var/spool/cron/bak/hzsis.last

具体代码如下:

cat   /usr/local/sbin/monitorcronjob.sh
#!/bin/bash

CRON=/var/spool/cron
#############compare $list with  $list.last file############
for list in `cat /usr/home/EDP/monitorjob.lst`;do

   a=`diff $CRON/$list  $CRON/bak/$list.last|wc -l`

   if [ ${a} -gt 0 ];then
######## If the user's cronjob has changed ,backup user's cronjob #############
    cp -p  $CRON/bak/$list.last  $CRON/bak/$list.`date +%Y-%m-%d_%H:%M:%S`.bk

############## List the changes  ###############
    diff $CRON/$list $CRON/bak/$list.last>/tmp/$list.`date +%Y-%m-%d_%H:%M:%S`.tmp

###### The changed cronjob will be the next comparison file user.last ######
    cat $CRON/$list > $CRON/bak/$list.last

############## Mail the part of the change to the user ##########

    /usr/local/bin/mail.pl -f "`hostname`-xxxx@163.com" -s "`hostname`: $list cronjob has been changed " abc@163.com < /tmp/$list.`date +%Y-%m-%d_%H:%M:%S`.tmp >/dev/null 2>&1
   fi
done

将/usr/local/sbin/monitorcronjob.sh 加入定时任务中运行,可以根据需要设置定时的频率,如每5分钟检测一次文件情况。

[root@vm ]$ crontab -e
*/5  * * * *   /usr/local/sbin/monitorcronjob

可以试试将/var/spool/cron/root文件中的内容进行修改测试效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值