最近看到群里有人聊到他们的服务器最近被挂马,然后想利用一个脚本能够实时监控web目录下文件的变化,也就是对该目录的增删改操作都会记录到相应日志下。
当时感觉这个功能的确实有点意思,所以网上查阅了些资料,自己研究了下,这会儿有空写了个脚本,分享给大家,如有问题,还请大家指出。
以下我写了两个脚本:
脚本1:将需要监控的目录的原始状态保存到LOG日志
脚本2:将脚本1的原始状态与本脚本比对,如果目录文件发生变化,则将变化的内容保存到日志。
注:原理实际上利用的是du -sb输出值来判断文件的变化,再利用diff进行比对。
1.在执行脚本前要保存原始的状态:
# vi initial.sh
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin/:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 监控的目录 DIR=/root # 临时文件 TMP_A=/tmp/a.txt # 遍历指定目录下的文件大小及路径并重定向到日志文件 find $DIR -print0 | xargs -0 du -sb > $TMP_A
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin/:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 监控的目录 DIR=/root # 日期变量 DATE=`date +%F_%H:%M` # 临时文件 TMP_A=/tmp/a.txt TMP_B=/tmp/b.txt TMP_C=/tmp/c.txt # 日志文件 LOG=/var/log/filemodify.log # 遍历指定目录下的文件大小及路径并重定向到日志文件 find $DIR -print0 | xargs -0 du -sb > $TMP_B # 比较目录变化,并将变化的文件写入日志 DIFF=$(diff $TMP_A $TMP_B) if [[ -z $DIFF ]]; then echo "Nothing change" >> $LOG else echo "Here is the change" >> $LOG echo "" >> $LOG echo "$DIFF" |awk '{print $3}'|sort -k2n |uniq |sed '/^$/d' |tee $TMP_C >> $LOG if [ -s $TMP_C ]; then echo "" >> $LOG echo "It modified at $DATE" >> $LOG # 将当前监控的目录结构覆盖为初始状态 find $DIR -print0 | xargs -0 du -sb > $TMP_A fi fi echo "====================================" >> $LOG #清理临时文件 rm -rf $TMP_B $TMP_C
本文向大家介绍python监控文件或目录变化,包括了python监控文件或目录变化的使用技巧和注意事项,需要的朋友参考一下 本文实例实现的功能是监控一个文件或目录的变化,如果有变化,把文件上传备份至备份主机,并且要监控上传过程是否有问题等,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助。
本文向大家介绍linux进程监控shell脚本代码,包括了linux进程监控shell脚本代码的使用技巧和注意事项,需要的朋友参考一下 为确保php页面在后台运行,写了一个监控脚本,假设程序异常退出,那么可以自动重启。 shell脚本/usr/local/scripts/receve.sh内容: 需要保证监控脚本正常运行,在每天凌晨自动重启脚本/usr/local/scripts/restart_
本文向大家介绍shell脚本实现监控shell脚本的执行流程及变量的值,包括了shell脚本实现监控shell脚本的执行流程及变量的值的使用技巧和注意事项,需要的朋友参考一下 很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的
本文向大家介绍Shell脚本实现Linux系统和进程资源监控,包括了Shell脚本实现Linux系统和进程资源监控的使用技巧和注意事项,需要的朋友参考一下 在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员。本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写。 文章目录:
问题内容: 场景: Linux系统中的文件夹。我想遍历文件夹中的每个.xls文件。 该文件夹通常由各种文件夹,各种文件类型(.sh,.pl,.csv等)组成。 我要做的就是遍历 根目录中的所有文件, 并仅对.xls文件执行程序。 编辑: 问题是我必须执行的程序是将.xls转换为.csv格式的’xls2csv’。因此,对于每个.xls文件,我必须获取文件名并将其附加到.csv。 例如,我有一个tes
本文向大家介绍java 使用线程监控文件目录变化的实现方法,包括了java 使用线程监控文件目录变化的实现方法的使用技巧和注意事项,需要的朋友参考一下 java 使用线程监控文件目录变化的实现方法 由于某种特殊的需求、弄了个使用线程监控文件目录变化的 代码基本如下、其中减去一些复杂的操作、只留下基本代码: 执行后,效果图如下: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,