当前位置: 首页 > 编程笔记 >

一个监控LINUX目录和文件变化的Shell脚本分享

马泰
2023-03-14
本文向大家介绍一个监控LINUX目录和文件变化的Shell脚本分享,包括了一个监控LINUX目录和文件变化的Shell脚本分享的使用技巧和注意事项,需要的朋友参考一下

最近看到群里有人聊到他们的服务器最近被挂马,然后想利用一个脚本能够实时监控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


2.执行监控脚本
# vi monitor.sh

#!/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 使用线程监控文件目录变化的实现方法   由于某种特殊的需求、弄了个使用线程监控文件目录变化的 代码基本如下、其中减去一些复杂的操作、只留下基本代码: 执行后,效果图如下: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,