通过管道计算哈希和,如果不匹配则中止

通过管道计算哈希和,如果不匹配则中止

如何通过管道来验证文件的校验和?例如我想做类似的事情

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

相关内容