验证文件的 SHA-256 总和,如果不符合预期则退出脚本

Verify SHA-256 sum of a file and exit the script if not as intended

我正在尝试制作一个 bash 脚本来自动安装我经常使用的软件,但我遇到了一个小问题。我希望我的脚本能够验证下载文件的 sha256sum 的有效性,并且要么以成功消息响应,要么在不符合预期时以错误消息退出。

这是我目前为止尝试过的方法(有些效果但不会在失败时退出):

shasum panel.tar.gz |
awk =="acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d"{print"SHA256SUM validated, installation may proceed"}

它是安装脚本的一部分,我想让它验证 shasum,然后如果它不符合预期 acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d,它应该退出整个脚本。我在上面给出的行使脚本保持原样而不会停止,即使 shasum 与预期不匹配。

使用进程替换为 shasum -c 即时创建校验和文件:

checksum=acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d
shasum -c <(echo "$checksum panel.tar.gz")

或将内容通过管道传输到 shasum,使用 - 作为文件名:

echo "$checksum panel.tar.gz" | shasum -c -

查看退出状态决定是否继续。

if ! echo "$checksum panel.tar.gz" | shasum -c -; then
    echo "Checksum failed" >&2
    exit 1
fi

如果除了立即退出之外不想做任何事情,可以使用

echo "$checksum panel.tar.gz" | shasum -c - || exit 1

简单用例,为了证明所有权和内容完整性,根据给定的金额签署和验证文件。


作者发布一个文件,和一个sha256 fingerprint sum.

为了求和,作者简单地做了:

sha256sum file

他得到一个sha256和文件名,由两个空格分隔


reader 或任何想要验证文件是否未更改 的人可以这样做:

if [[ $(sha256sum file) = "75efecda52220be1c97ab2b29cd2880a089dff40b0f7967653535cb8b02e8cc2  file" ]];then echo "Signature OK"; fi