#!/bin/bash

#

#定义MD5文件保存的路径

md5_path=/tmp/md5.sum

#判断MD5基准校验文件是否存在,不存在则创建此文件,并修改权限只有root用户或者指定用户有读写权限

[ ! -f $md5_path ] && touch $md5_path && chmod 600 $md5_path

read -p "请输入你需要MD5检验文件的目录,必须以\"/\"开始: " path

if ! echo $path | grep -q "^/";then echo "不是以\"/\"开始";exit 1;fi

echo "#################################################"

#如果所给需要md5校验的目录不存在,或者目录存在但目录下没有一个文件,则返回错误并提示用户

if [ ! -d $path ] || [ `find $path -type f | wc -l` -eq 0 ];then

echo "错误:路径不存在或者该路径下没有文件"

exit 1

fi

#判断基准文件数量

for i in `cat /tmp/md5.sum | awk '{print $2}'`;do

[ ! -f $i ] && echo -e "[检测时间:`date +"%Y-%m-%d %T.%N"`]  [文件:$i] \033[31m[MD5结果:去除]\033[0m" 2>&1 | tee -a /var/log/md5.log

done

for list in `find $path -type f`;do

#   echo " list = $list"

new_md5_arg1=`md5sum $list | awk '{print $1}'`

new_md5_arg2=`md5sum $list | awk '{print $2}'`

old_md5_arg2=`awk -v List="$list" '$2 == List{print $2}' $md5_path`

if [[ "$new_md5_arg2" == "$old_md5_arg2" ]];then

old_md5_arg1=`awk -v List="$list" '$2 == List{print $1}' $md5_path`

if [[ ! "$new_md5_arg1" == "$old_md5_arg1" ]];then

echo -e "[检测时间:`date +"%Y-%m-%d %T.%N"`]  [文件:$list] \033[31m[MD5结果:改变]\033[0m" 2>&1 | tee -a /var/log/md5.log

else

echo -e "[检测时间:`date +"%Y-%m-%d %T.%N"`]  [文件:$list] \033[32m[MD5结果:未改变]\033[0m"

fi

else

md5sum $list >> $md5_path

echo -e "[检测时间:`date +"%Y-%m-%d %T.%N"`]  [文件:$list] \033[31m[MD5结果:添加]\033[0m" 2>&1 | tee -a /var/log/md5.log

fi

#如果文件数量大,可以把sleep的时间间隔设置小点。

sleep 0.2

done

linux生成md5指定文件名,linux 通过MD5监控指定路径文件的变动相关推荐

  1. linux生成动态链接库返回字符串,Linux动态链接库的生成和使用

    目录 1. 编写C程序 比如编写myfunc.c文件,里面包含两个函数,一个是say_hello,另一个是cal_sum. #include "myfunc.h" void say ...

  2. linux 按列提取文件名,Linux展示按文件名降序文件

    Linux显示按文件名降序文件 Linux显示按文件名降序文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls -lr 总用量 56 drwxr-xr-x ...

  3. Linux系统可以显示文件名,Linux系统如何显示中文目录和文件名

    Linux系统如何显示中文目录和文件名 修改/etc/下的fstab文件,fstab内容如下 /dev/hda9 / ext2 defaults 1 1 /dev/hda8 /boot ext2 de ...

  4. linux生成目录间补丁,linux打补丁 patch

    1.diff的使用 diff可以完成比较功能,生成补丁文件 格式::diff [option] oldfile newfile 常用的option选项有: -r 对目录进行递归处理 -u 输出统一格式 ...

  5. linux生成目录间补丁,linux之打补丁

    linux内核打补丁 将帮助文件另存为的方法: BingGongtekiMacBook-Pro:~ binggong$ man cp |col -b >cp.man 1.比较文件的区别,创建补丁 ...

  6. linux生成表格文件大小,在Linux下制作工资表(转)

    在Linux下制作工资表(转)[@more@] 在Linux桌面系统下,使用办公套件的电子表格模块可方便制作各种常用的表格,并进行数据计算或插入图表.下面以工资表为例,讲解在Linux下应用RedOf ...

  7. linux sed命令新文件名,linux中sed命令批量修改

    sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  8. linux生成公钥实现ssh,linux下生成 SSH 公钥,用于GitHub

    typedef 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向 ...

  9. linux上传ftp文件名乱码,windows使用ftp上传文件至UNAS中出现文件名乱码问题的解决...

    之前在康博机械使用西数的nas,后来在耐达使用群晖的nas.nas的方便快捷深入我心,在之后我尝试过各种开源的nas系统,综合考考虑我的需求,我选择了宁波万由的免费unas系统.部署在我的一台HP,M ...

最新文章

  1. 大话设计模式—外观模式
  2. jquery 验证小数点后几位_利用jquery实现验证输入的是否是数字、小数,包含保留几位小数...
  3. 汇编语言(二十七)之身份证最后一位求和校验
  4. 业务随行:用户的网络访问策略还能这么玩
  5. ThinkJava-压缩
  6. VC之fseek函数、ftell函数和rewind函数
  7. 基于HFSS阵列天线设计
  8. 致信息安全专业同学的一封信
  9. 闲鱼数据采集学习研究
  10. 中南民大计算机学院复试细则,中南民族大学各学院2019年考研复试细则
  11. 国企安逸?我笑了……
  12. 短视频平台类的社交媒体市场现状与发展前景到底如何?
  13. python学习记录 day1
  14. JS逆向——国税总局发票查验平台
  15. thinkphp6错误页面编辑_Windows10在Word中编辑PDF文件
  16. EBImage中文文档
  17. 程序员,回头是岸(转)
  18. 旅游系统(SSM框架+MySQL+Redis+VUE)后端代码
  19. 计算机一级b证书图片p,只需两步,分分钟搞定证件照(内附福利)
  20. 机器人行业的一些术语

热门文章

  1. 小时候的小霸王游戏!坦克大战 超级玛丽 魂斗罗 忍者神龟 都有!
  2. 详解目标检测之Neck选择
  3. js创建对象的几种方法及继承
  4. P1515 旅行(简单搜索)
  5. install vim plugin local file offline
  6. hive 表的常用操作
  7. 自定义窗体设计器-控件测试
  8. 2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
  9. Nginx 静态资源缓存配置
  10. JSP简单标签带属性开发