您好,我想在 Linux 上创建一个 bash 文件,它根据备份的 md5 哈希值检查文件的 md5 哈希值,因此我知道原始文件是否已被篡改。该脚本应输出两个文件的 md5 哈希值,然后比较两个创建的哈希文件:
md5sum file1 > file1.md5 | cut -c -32
if [ file1.md5 =! backup.md5 ] then;
#send email
但是它不起作用,file.md5 中仍然有文件名,有人知道如何只获取 file.md5 的 has 吗?
最佳答案
您的脚本有几个问题。
首先你应用 cut -c -32
之后你已经将 md5sum 输出重定向到 file1.md5,这就是它什么都不做的原因。
你应该像那样重组它,而不是:
md5sum file1 | cut -c -32 > file1.md5
接下来,你不能直接用 =!
比较文件,你必须读取并比较它们的内容,就像这样:
[ "$(cat file1.backup.md5)" != "$(cat file1.real.md5)" ]
还要注意 md5sum
已经有一个“检查模式”,所以你可以简单地这样做:
#Save MD5 sum of your file to backup.md5, in md5sum native format
md5sum file1 > backup.md5
#Later on ...
if ! md5sum -c backup.md5; then
...
关于bash - md5sum 仅输出文件中的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679228/