2011-04-05 24 views
2

我正在嘗試編寫一個bash腳本來檢查給定的簽名是否有效。我有兩個可能的輸出:bash腳本檢查GPG簽名是否有效並屬於密鑰

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

WRONG

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 

RIGHT

gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0 
gpg: Good signature from "Test key <[email protected]>" 

我怎樣才能檢測是否檢查是正確的,而不必解析結果。

這個問題類似於Verify GPG file signature with Perl但II想這樣做,在bash(或者,如果非常需要的Python)。

回答

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

是不是隻是一樣'GPG --no-默認的鑰匙圈--keyring /etc/pubring.gpg --verify file.tgz.sig文件。 tgz && echo一切正常||回聲與簽名問題?或w /如果:'如果gpg - 無默認密鑰環 - 密鑰環/etc/pubring.gpg --verify file.tgz.sig file.tgz;然後回聲一切都很好;其他回聲簽名問題; fi' – nonchip 2012-08-07 11:01:19

1

從GnuPG的手冊頁:

程序返回0,如果一切好吧,如果至少有一個籤​​名不好,還有其他錯誤代碼可能導致致命錯誤。

所以你可以用http://docs.python.org/library/subprocess.html得到gpg的返回碼。

相關問題