bash脚本检查GPG签名是否有效并且属于密钥

Eri*_*ric 3 python bash gnupg

我正在尝试编写一个bash脚本来检查给定的签名是否有效.我有两个可能的输出:

$ gpg --no-default-keyring --keyring /etc/pubring.gpg  --verify file.tgz.sig file.tgz
Run Code Online (Sandbox Code Playgroud)

错误

gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0
gpg: Can't check signature: public key not found
Run Code Online (Sandbox Code Playgroud)

gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0
gpg: Good signature from "Test key <test@localhost>"
Run Code Online (Sandbox Code Playgroud)

如何在不必解析结果的情况下检测检查是否正确.

这个问题与使用Perl验证GPG文件签名类似,但是我想在bash中执行此操作(或者如果非常需要Python.)

Dav*_*ebb 6

我不知道gpg命令,但它是否为"错误"和"正确"结果返回不同的退出值?运行命令后检查此问题的最简单方法是:

echo $?
Run Code Online (Sandbox Code Playgroud)

如果一切正常,我希望它返回0,否则返回其他东西.所以你的bash脚本看起来像:

gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz

if [ $? -eq 0 ]
then
    echo All is well.
else
    echo Problem with signature.
fi
Run Code Online (Sandbox Code Playgroud)

  • 这不是和 `gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz &amp;&amp; echo 一切都很好 || 一样吗?echo 签名有问题`? 或 w/ if: `if gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz; 然后 echo 一切都很好;else echo 签名有问题;菲` (2认同)