shell – 找出文件是否已更改
发布时间:2020-12-16 01:28:16 所属栏目:安全 来源:网络整理
导读:我想知道自上次我的 shell脚本启动以来文件是否被修改,也许是通过创建一个布尔值或者一些东西… 也许可以保存脚本在文本文件中运行的最后一次,并且脚本在下一次应该读取该文件时启动,然后应该找出哪些文件被更改,以便我可以检查一下文件已更改如下: for fil
我想知道自上次我的
shell脚本启动以来文件是否被修改,也许是通过创建一个布尔值或者一些东西…
也许可以保存脚本在文本文件中运行的最后一次,并且脚本在下一次应该读取该文件时启动,然后应该找出哪些文件被更改,以便我可以检查一下文件已更改如下: for file in * do #Somecode here if [ $filehaschanged != "0" ]; then echo "Foobar" > file.txt fi #Somecode here done 也许有可能通过查找…任何想法来做到这一点
迈克尔,通过“改变”,你问这个文件是否被触摸(即日期戳是较新的),或者你询问内容是否不同?
如果是前者,可以用find或test来测试.例如,在shell中: #!/bin/sh touch file1 sleep 1 touch file2 if [ "file1" -nt "file2" ]; then echo "This will never be seen." else echo "Sure enough,file1 is older." fi 如果您要查找的内容是测试内容,那么您的操作系统可能会包含一些将测试文件散列的内容. [ghoti@pc ~]$date > testfile [ghoti@pc ~]$md5 testfile MD5 (testfile) = 1b2faf8be02641f37e6d87b15444417d [ghoti@pc ~]$cksum testfile 3778116869 29 testfile [ghoti@pc ~]$sha1 testfile SHA1 (testfile) = 5f4076a3828bc23a050be4867549996180c2a09a [ghoti@pc ~]$sha256 testfile SHA256 (testfile) = f083afc28880319bc31417c08344d6160356d0f449f572e78b343772dcaa72aa [ghoti@pc ~]$ 我在FreeBSD.如果你在Linux,那么你可能有“md5sum”而不是“md5”. 要将其放入脚本中,您需要遍历文件列表,存储其哈希值,然后使用机制根据其存储的哈希值来测试当前文件.这很容易脚本: [ghoti@pc ~]$find /bin -type f -exec md5 {} ; > /tmp/md5list [ghoti@pc ~]$head -5 /tmp/md5list MD5 (/bin/uuidgen) = 5aa7621056ee5e7f1fe26d8abb750e7a MD5 (/bin/pax) = 7baf4514814f79c1ff6e5195daadc1fe MD5 (/bin/cat) = f1401b32ed46802735769ec99963a322 MD5 (/bin/echo) = 5a06125f527c7896806fc3e1f6f9f334 MD5 (/bin/rcp) = 84d96f7e196c10692d5598a06968b0a5 您可以存储这个(而不是/ bin运行它在任何重要的,可能/)在可预测的位置,然后写一个快速脚本来检查文件对哈希: #!/bin/sh sumfile=/tmp/md5list if [ -z "$1" -o ! -f "$1" ]; then echo "I need a file." exit 1 elif ! grep -q "($1)" $sumfile; then echo "ERROR: Unknown file: $1." exit 1 fi newsum="`md5 $1`" if grep -q "$newsum" $sumfile; then echo "$1 matches" else echo "$1 IS MODIFIED" fi 这种脚本是tripwire提供的工具. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Angular,从动态创建的Component获取ViewChild / ViewContai
- scala – 使用部分应用的函数,性能问题
- angularjs – 使用XHR而不是File Transfer Plugin的Ionic C
- 什么是vimrc函数来确定缓冲区是否已被修改?
- RSA公私钥生成和RSA证书创建”利器”
- Angular2中使用ngx-translate进行国际化
- Shell脚本监控Linux系统硬盘各分区使用率
- 在angular 2打字稿中导入gapi.auth2
- Sublime复古模式(vim)删除,猛拉,改为正则表达式
- twitter-bootstrap – 如何在Bootstrap – Carousel中将图像