我正在尝试编写一个bash脚本,用于检查给定签名是否有效。我有两个可能的输出:
$ gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz
错误
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
对了
gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0
gpg: Good signature from "Test key <test@localhost>"
如何在不必解析结果的情况下检测检查是否正确。
这个问题类似于Verify GPG file signature with Perl,但我希望在bash中做到这一点(或者如果非常需要Python。)
答案 0 :(得分:6)
我不知道gpg
命令,但是它会为“错误”和“正确”结果返回不同的退出值吗?运行命令后检查此问题的最简单方法是:
echo $?
如果一切正常,我希望它返回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
答案 1 :(得分:1)
来自GnuPG手册页:
如果一切正常,程序返回0,如果至少签名错误则返回1,以及致命错误的其他错误代码。
因此,您可以使用http://docs.python.org/library/subprocess.html获取gpg
的返回码。