如何通过管道来验证文件的校验和?例如我想做类似的事情
curl -sL https://example.org/maybe-safe-maybe-not.tar.gz | md5sum 8da7904f495f682c39fa505b6404f9d1 | tar xvzC /usr/local/bin
如果给定的哈希值(作为参数)不匹配,则类似的程序将md5sum
中止管道,或者如果匹配则转发文件输出。
我认为这将使我的脚本更加安全,因为我至少可以确定我得到的是我测试过的版本。
我可以通过一些技巧来检查总和:
cat yarn.lock | md5sum -c <(echo 8da7904f495f682c39fa505b6404f9d1 -) --status
yarn.lock
但我不知道如何转发之后的输出。
答案1
下载到文件名maybe-safe-maybe-not.tar.gz
然后:
expected_digest='8da7904f495f682c39fa505b6404f9d1'
if [ "${expected_digest} -" = "$(md5sum <maybe-safe-maybe-not.tar.gz)" ]; then
tar xvzf maybe-safe-maybe-not.tar.gz -C /usr/local/bin
else
echo 'ERROR: ...'
exit 1
fi