我需要获取在线文件的 MD5 哈希值,然后将其与本地计算机上的文件进行比较。
我如何在 bash 中做到这一点?
答案1
您可以使用curl
来获取在线文件:
curl -sL http://www.your.fi/le | md5sum | cut -d ' ' -f 1
要与另一个进行比较,请将其存储在变量中,然后继续:
online_md5="$(curl -sL http://www.your.fi/le | md5sum | cut -d ' ' -f 1)"
local_md5="$(md5sum "$file" | cut -d ' ' -f 1)"
if [ "$online_md5" = "$local_md5" ]; then
echo "hurray, they are equal!"
fi
答案2
wget
可以使用 下载到标准输出-O-
。
wget http://example.com/some-file.html -O- \
| md5sum \
| cut -f1 -d' ' \
| diff - <(md5sum local-file.html | cut -f1 -d' ')
md5sum
在 MD5 后附加文件名,您可以使用 将其删除cut
。
答案3
wget -q -O- http://example.com/your_file | md5sum | sed 's:-$:local_file:' | md5sum -c
替换http://example.com/your_file
为在线文件的 URL 和local_file
本地文件的名称
答案4
通过wget
和md5sum
和awk
作为长单行=)
awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}'\
<(wget -O- -q URL | md5sum)\
<(md5sum local_file)
例子
$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb)
match
$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum foo)
no match