linux下监控某个目录是否被更改
需求:对一个目录(比如/data/test)进行监控,当这个目录下文件或子目录出现变动(如修改、创建、删除、更名等操作)时,就发送邮件!
针对上面的需求,编写shell脚本如下:
[root@centos6-vm01 opt]# vim file_monit.sh #!/bin/bash #此脚本用于检测linux系统重要文件是否被改动,如果改动则用邮件报警 #建议用定时任务执行此脚本,如每5分钟执行一次,也可修改此脚本用于死循环检测 #Ver:1.0 #http://www.cnblogs.com/kevingrace#定义验证文件所在目录 FileDir='/var/CheckFile'#获取主机名或自己定义 HostName=$(hostname)#定义邮件参数:xmtp地址,发送邮件帐号,发送邮件密码,接收邮件地址,邮件主题,邮件内容 Mail_Smtp="smtp.wangshibo.com" Mail_User="notice@wangshibo.com" Mail_Pass="notice@123" Mail_From="notice@wangshibo.com" Mail_To="wangshibo@wangshibo.com" Mail_Subject="${HostName}:There are changes to system files" Mail_Conntent="${HostName}:There are changes to system files"#定义需要验证的文件目录。这里我监控的是/data/test目录 CheckDir=( /data/test )#生成所定义需验证的文件样本日志函数 OldFile () { for i in ${CheckDir[@]} do /bin/find ${i} -type f |xargs md5sum >> ${FileDir}/old.log done } NewFile () { for i in ${CheckDir[@]} do /bin/find ${i} -type f |xargs md5sum >> ${FileDir}/new.log done }#生成所定义文件新日志函数(注意后面发送邮件内容,\n表示换行) SendEMail () { /usr/local/bin/sendEmail -f $Mail_From -t $Mail_To -s $Mail_Smtp -u $Mail_Subject -xu $Mail_User -xp $Mail_Pass -m "$Mail_Conntent"\n } if [ ! -d ${FileDir} ] then mkdir ${FileDir} fi#假如验证文件目录不存在则创建 if [ ! -f ${FileDir}/old.log ] then OldFile fi#假如没有安装sendEmail则安装 if [ ! -f /usr/local/bin/sendEmail ] then cd /usr/local/src/ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar -xf sendEmail-v1.56.tar.gz cd sendEmail-v1.56 cp sendEmail /usr/local/bin chmod 0755 /usr/local/bin/sendEmail fi#生成新验证日志 NewFile#新验证日志与样本日志进行比较 /usr/bin/diff ${FileDir}/new.log ${FileDir}/old.log >${FileDir}/diff.log Status=$?#假如比较结果有变化,则发送邮件报警 if [ ${Status} -ne 0 ] then Mail_Conntent="$(grep '<' ${FileDir}/diff.log |awk '{print $3}')" SendEMail fi#清除新旧日志,把比较结果进行备份 /bin/mv -f ${FileDir}/diff.log ${FileDir}/diff$(date +%F__%T).log cat /dev/null > ${FileDir}/old.log cat /dev/null > ${FileDir}/new.log#重新生成样本日志 OldFile#删除目录内30天以前的比较结果备份文件 /bin/find ${FileDir} -type f -mtime +30 |xargs rm -f
确保本机能连上shell脚本中指定的smtp服务器的25好端口
[root@centos6-vm01 opt]# telnet smtp.wangshibo.com 25 Trying 223.252.214.65... Connected to smtp.wangshibo.com. Escape character is '^]'. 220 icoremail.net Anti-spam GT for Coremail System (icoremail-gateway-smtp[20170531])
下面开始测试
[root@centos6-vm01 test]# cd /opt/ [root@centos6-vm01 opt]# cd /data/test/ [root@centos6-vm01 test]# ll total 0 [root@centos6-vm01 test]# mkdir haha [root@centos6-vm01 test]# echo "123456" > haha/heihei [root@centos6-vm01 test]# ll total 4 drwxr-xr-x. 2 root root 4096 Jan 10 01:42 haha [root@centos6-vm01 test]# echo "abcdef" > test.txt [root@centos6-vm01 test]# ll total 8 drwxr-xr-x. 2 root root 4096 Jan 10 01:42 haha -rw-r--r--. 1 root root 7 Jan 10 01:42 test.txt执行监控脚本 [root@centos6-vm01 test]# sh -x /opt/file_monit.sh注意:当首次执行脚本的时候,由于所监控的目录下的文件没有变动,所以不会发送邮件!查看对比后的日志 [root@centos6-vm01 test]# ll -d /var/CheckFile/ drwxr-xr-x. 2 root root 4096 Jan 10 01:44 /var/CheckFile/ [root@centos6-vm01 test]# ll /var/CheckFile/ total 4 -rw-r--r--. 1 root root 0 Jan 10 01:44 diff2018-01-10__01:44:30.log -rw-r--r--. 1 root root 0 Jan 10 01:44 new.log -rw-r--r--. 1 root root 166 Jan 10 01:44 old.log[root@centos6-vm01 test]# cat /var/CheckFile/diff2018-01-10__01\:44\:30.log [root@centos6-vm01 test]# cat /var/CheckFile/new.log [root@centos6-vm01 test]# cat /var/CheckFile/old.log 237267ea7fefa88360c22ab6fd582d7e /data/test/.hhhh.swp 5ab557c937e38f15291c04b7e99544ad /data/test/test.txt f447b20a7fcbf53a5d5be013ea0b15af /data/test/haha/heihei============================================================================================================================== 现在开始对/data/test目录下的文件做下变动 [root@centos6-vm01 test]# echo "aaaaaa" >> test.txt [root@centos6-vm01 test]# touch haha/bobo [root@centos6-vm01 test]# mkdir heihei [root@centos6-vm01 test]# ll total 12 drwxr-xr-x. 2 root root 4096 Jan 10 01:47 haha drwxr-xr-x. 2 root root 4096 Jan 10 01:47 heihei -rw-r--r--. 1 root root 14 Jan 10 01:47 test.txt执行监控脚本 [root@centos6-vm01 test]# sh -x /opt/file_monit.sh 查看对比后的日志 [root@centos6-vm01 test]# ll /var/CheckFile/ total 8 -rw-r--r--. 1 root root 0 Jan 10 01:44 diff2018-01-10__01:44:30.log -rw-r--r--. 1 root root 179 Jan 10 01:47 diff2018-01-10__01:47:41.log -rw-r--r--. 1 root root 0 Jan 10 01:47 new.log -rw-r--r--. 1 root root 221 Jan 10 01:47 old.log [root@centos6-vm01 test]# cat /var/CheckFile/diff2018-01-10__01\:47\:41.log 2,3c2 < 4533551682ca49b2f9b1f2829bf3b29d /data/test/test.txt < d41d8cd98f00b204e9800998ecf8427e /data/test/haha/bobo --- > 5ab557c937e38f15291c04b7e99544ad /data/test/test.txt[root@centos6-vm01 test]# cat /var/CheckFile/old.log 237267ea7fefa88360c22ab6fd582d7e /data/test/.hhhh.swp 4533551682ca49b2f9b1f2829bf3b29d /data/test/test.txt d41d8cd98f00b204e9800998ecf8427e /data/test/haha/bobo f447b20a7fcbf53a5d5be013ea0b15af /data/test/haha/heihei通过上面的diff日志,可以看到新变动的文件或子目录已经记录到日志里了。
查看邮件,就能看到/data/test目录下变动的文件或子目录信息了
通过crontab定时任务,每5分钟执行一次检查:
[root@centos6-vm01 test]# crontab -e */5 * * * * /bin/bash -x /opt/file_monit.sh > /dev/null 2>&1
以上脚本也可以用于检测linux系统重要文件是否被更改,只需将检查的目录由脚本中的/data/test改为/etc即可!
转载于:https://www.cnblogs.com/kevingrace/p/8260032.html
linux下监控某个目录是否被更改相关推荐
- linux下的主要目录
2019独角兽企业重金招聘Python工程师标准>>> [Linux系统目录结构] 登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bin是 ...
- Linux下监控文件系统
Linux下监控文件系统 Linux的后台程序通常在机器没有问题的情况下,需要长期运行(比如说数个月,甚至是数年).但是,程序的配置文件有时候是需要定期作调整.为了不影响程序对外服务(不重启),动态加 ...
- Linux_linux基础命令(增删查,权限,Linux下的重要目录,重要命令(. du, df, top, free, pstack, su, sudo).安装gcc/g++, gdb, vim )
r:表示可读w:表示可写x:表示可执行也可以用数字表示这一点我们会在修改文件权限说明.对于文件夹的rwx表示:r表示可读及可以查看文件夹内容可以ls查看w表示可写及可以向文件夹中传送内容如文件x表示可 ...
- linux u盘插入事件,Linux 下监控USB设备拔插事件
Linux 下监控USB设备拔插事件 发布时间:2018-01-29 00:00, 浏览次数:1111 , 标签: Linux USB * 使用Netlink来实现 这是一个特殊的socket,可以接 ...
- mysql 多数据库文件_今天突然发现我的Linux下MySQL数据库目录多了好多文件
今天再次重现Blog了,虽然很忙,还是要来写一下Blog的,嘻,首先还是一样先谢谢Sery 今天发现了我的Linux下Mysql数据库目录多了好多Mysql-bin.0000X这些文件,经过自己查找资 ...
- 怎么查这个文件在linux下的哪个目录
因为要装pl/sql所以要查找tnsnames.ora文件..看看怎么查这个文件在linux下的哪个目录 find / -name tnsnames.ora 查到: /opt/app/oracle/p ...
- 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 参考文章: (1)解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 (2)http ...
- linux root所在目录,Linux下误删root目录
Linux下误删root目录 发布时间:2008-05-26 01:09:21来源:红联作者:Baidoa 下午用vi编辑文件,保存退出时误按~键,按成wq~,结果目录下产生一个名为~的文件.因为以前 ...
- Linux下 C++遍历目录文件
可参考如下代码或者参考链接博客. 测试代码: #include <iostream> #include <stdio.h> #include <unistd.h> ...
最新文章
- 云计算的7种变化方式
- 浏览器数据库IndexedDB介绍
- RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践
- 浙江理工大学2019年5月赛
- 【MFC】带背景的工具栏
- jsp快到截止日期字体颜色变色_jsp页面中字体变色问题 - Java / Web 开发
- [Linux 使用(2)] 64位Linux下安装jboss-as-7.1 以及jdk1.7
- java字符串连接效率_关于java:字符串连接中的“+”是否会影响效率?
- UI网页头部设计模板素材|这么多讲究,你知道吗?
- Android单元测试读写文件,xml-如何为android单元测试提供数据文件
- linux关于子网掩码函数,Linux 子网掩码计算, 二进制十进制互相转换
- 数据挖掘:模型选择——K-means
- ScrollView嵌套listview高度适应
- spring5-介绍Spring框架
- matlab 绘制圆光栅,火爆抖音的圆点光栅画怎么做的?
- Cannot find module ‘xxx‘ or its corresponding type declarations.Vetur(2307)
- linux远程win7无法连接wifi,苹果电脑win7系统连不上wifi热点深度纯净
- 黑苹果html5,黑苹果配置必备神器 Clover Configurator v5.10.0.0 官方中文原版
- 六位不重复房间ID生成器,不使用Redis和额外数据结构
- 精品软件 推荐 ABBYY FineReader 世界排名第一的 OCR 文字识别工具
热门文章
- 【java笔记】lambda表达式介绍和使用
- Mplayer 的编译
- 使用FFMPEG类库分离出多媒体文件中的音频码流
- java 字符串 float_Java 字符串转float运算 float转字符串
- PHP的continue语句,PHP continue语句
- h3c c语言题库,H3C认证试题
- Python安装库Could not find a version that satisfies the requirement requests (from versions: none)
- Linux下Tomcat指定JDK和设置内存大小
- Eclipse、IntelliJ IDEA、TortoiseSVN清除svn帐号
- android电子书控件,Android控件大全.pdf