shell脚本监控目录下文件被篡改时报警

思路:

 目录下文件被篡改的几种可能:

  1.被修改

  2.被删除

  3.新增文件

md5命令详解

  参数:

    -b 以二进制模式读入文件内容

    -t 以文本模式读入文件内容

    -c 根据已生成的md5值,对现存文件进行校验

    --status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断

提示:md5sum 是校验文件内容,与文件名是否相同无关

[root@lamp scripts]# mkdir /tmp/test
[root@lamp scripts]# touch /tmp/test/{a,b,c,d}
[root@lamp scripts]# find /tmp/test/ -type f |xargs md5sum >>/tmp/test.md5
[root@lamp scripts]# cat /tmp/test.md5
d41d8cd98f00b204e9800998ecf8427e /tmp/test/b //不同的文件的md5值是一样的,因为这些文件的内容都一样,都为空
d41d8cd98f00b204e9800998ecf8427e /tmp/test/c
d41d8cd98f00b204e9800998ecf8427e /tmp/test/a
d41d8cd98f00b204e9800998ecf8427e /tmp/test/d
[root@lamp scripts]# echo "haha" >/tmp/test/b
[root@lamp scripts]# >/tmp/test.md5
[root@lamp scripts]# find /tmp/test/ -type f |xargs md5sum >>/tmp/test.md5
[root@lamp scripts]# cat /tmp/test.md5
7494ab07987ba112bd5c4f9857ccfb3f /tmp/test/b
d41d8cd98f00b204e9800998ecf8427e /tmp/test/c
d41d8cd98f00b204e9800998ecf8427e /tmp/test/a
d41d8cd98f00b204e9800998ecf8427e /tmp/test/d
[root@lamp scripts]# echo "xixi" >/tmp/test/c
[root@lamp scripts]# md5sum -c /tmp/test.md5
/tmp/test/b: OK
/tmp/test/c: FAILED
/tmp/test/a: OK
/tmp/test/d: OK
md5sum: WARNING: of computed checksums did NOT match
[root@lamp scripts]#

需求

  监测/var/wev/bbs目录下的文件不被篡改

 思路:

  1.   MD5_ori.md5文件作为原始的md5指纹库
  2.   MD5_new.md5文件作为每次检查所生成的指纹库
  3.   然后将MD5_ori.md和MD5_new.md5做diff检查,将检查的结果追加到md5.log文件中
  4.   将log中的内容邮件发送
  5.   每五分钟执行一次该脚本(定时任务)
#!/bin/sh

MD5_ori=/tmp/bbs_ori.md5
MD5_new=/tmp/bbs_new.md5
MD5_log=/tmp/md5.log [ ! -e $MD5_ori ]&&{
echo "No MD5 original file!!!"
exit
} [ ! -e $MD5_new ]&&{
touch $MD5_new
} [ ! -e $MD5_log ]&&{
touch $MD5_log
} find /var/web/bbs/ -maxdepth -type f|xargs md5sum >>$MD5_new diff $MD5_ori $MD5_new >>$MD5_log n=`cat $MD5_log|wc -l`   //检查log文件是否为空 [ $n -eq ]||cat $MD5_log|mail -s "file is changed!!!_$(date +%F)" 18348******@.com  >$MD5_new //清空文件,为下次检测做准备
>$MD5_log          //清空文件,为下次检测做准备

  

上一篇:pg_stat_statements源代码分析


下一篇:C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库