思路:

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

  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          //清空文件,为下次检测做准备

  

shell脚本监控目录下文件被篡改时报警的更多相关文章

  1. 利用shell脚本监控目录内文件改动

    #! /bin/bash webroot="/home/www/" cp /dev/null rsync_file if [ ! -f   file.md5 ];then      ...

  2. linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志

    想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...

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

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  4. shell脚本 批量转换目录下文件编码

    发布:JB01   来源:脚本学堂     [大 中 小] 分享一例shell脚本,实现可以批量转换目录下的文件编码,很实用的一个小shell,有需要的朋友参考下.原文地址:http://www.jb ...

  5. Centos7下crontab+shell脚本定期自动删除文件

    问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ...

  6. 用shell脚本监控进程是否存在 不存在则启动的实例

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

  7. shell脚本监控Linux系统性能指标

    2016-11-04 22:41 原作者不详 分类: Linux(7) 在服务器运维过程中,经常需要对服务器的各种资源进行监控, 例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出 ...

  8. linux shell脚本监控进程是否存在

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:    #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...

  9. Linux常用基础命令整理:关机命令、查看目录下文件命令等

    Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...

随机推荐

  1. webpack1.x 升级到 webpack2.x 英文文档翻译

    近日项目要升级到webpack2.2,原来使用的webpack版本是1.12,在升级项目的同时,翻译一下官方的升级文档,去掉了一些不常用的配置 resolve.root, resolve.fallba ...

  2. c#访问存储过程

    // 2015/07/04 // 访问存储过程 using System; using System.Collections.Generic; using System.Linq; using Sys ...

  3. Windows Opengl ES 环境搭建

    环境 OS:win7 专业版SP1 64位 编译器: VS 2013 express 的cl 软件 windows上运行OpenGL ES要用到第三方的头文件,库文件和dll.下载地址 http:// ...

  4. 关于Monkey的一切都在这里

    关于Monkey的一切都在这里 版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 允许有条件转载,转载请附带底部二维码. 一.什么是Monkey Monkey是 ...

  5. 【openstack N版】——镜像服务glance

    一.openstack镜像服务glance 1.1 glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(g ...

  6. Activiti工作流(一)之基本操作介绍

    工作流的概念: 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或 ...

  7. 【转】jqGrid学习之参数

    jqGrid参数 名称 类型 描述 默认值 可修改 url string 获取数据的地址 datatype string 从服务器端返回的数据类型,默认xml.可选类型:xml,local,json, ...

  8. 学习接水系统(java+thread线程)

    (一)项目框架分析 对于学生并发接水项目,根据面向对象的思想,需要创建两个对象,即学生和水龙头. 接下来主要讲解不排队接水和排队接水两张情况. 项目的目录文件如下: (二)不排队接水 假设有四个学生小 ...

  9. 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现

    用字符串或者数组表示大数是一种很简单有效的表示方式.在打印1到最大的n为数的问题上采用的是使用数组表示大数的方式.在相关题实现任意两个整数的加法.减法.乘法的实现中,采用字符串对大数进行表示,不过在具 ...

  10. java之重定向与转发

    昨天搞了一个问题,关于手机返回按钮的(Android机,ios没有返回键) 在每一步操作都要进过鉴权,如果鉴权不通过就需要跳转到指定jsp页面,再进行link:到app进行登录操作: 然后问题出现了, ...