• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > 一个监控LINUX目录和文件变化的Shell脚本分享

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

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了linux shell脚本,linux shell脚本攻略,linux shell脚本实例,linux常用shell脚本,linux编写shell脚本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

</div>

您可能想查找下面的文章:

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • Linux shell脚本输出日志笔记整理(必看篇)
  • shell脚本 自动创建用户详解及实例代码
  • Linux Shell中三种引号的用法及区别
  • linux脚本判断条件总结(必看)
  • linux shell发送Email邮件的方法详解
  • Linux shell 之 提取文件名和目录名的一些方法总结
  • shell脚本实现输入密码显示星号
  • linux shell在while中用read从键盘输入的实现
  • shell脚本通过expect实现自动单边无密登录功能

相关文章

  • Linux Shell脚本系列教程(七):脚本调试
  • Shell脚本while、until循环语句简明教程
  • Shell脚本把文件从GBK转为UTF-8编码
  • 一天一个shell命令 linux文本系列-file命令用法
  • linux脚本判断条件总结(必看)
  • 一天一个shell命令 linux文本内容操作系列-awk命令详解
  • 关于Linux反空闲设置的两种方法总结
  • SED单行脚本快速参考中文版(Unix 流编辑器)
  • shell脚本实现快速生成xml格式sitemap实例分享
  • git多账号登录问题解析

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享
    • Shell脚本实现温和方式重启Centos系统
    • linux shell 字符串操作(长度,查找,替换)详解
    • Bash Shell字符串操作小结
    • Linux下查找后门程序 CentOS 查后门程序的shell脚本
    • Shell脚本实现的基于SVN的代码提交量统计工具
    • 一句话Shell命令关闭不需要的随机启动服务
    • Shell脚本判断Apache进程是否存在
    • 如何短时间内学好一门语言 shell脚本语言为例
    • 一个简洁的全自动安装LNMP服务器环境的Shell脚本分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有