2011-04-05 6 views
2

特定の署名が有効かどうかをチェックするbashスクリプトを作成しようとしています。 GPG署名が有効で、キーに属しているかどうかをチェックするbashスクリプト

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 --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz 

WRONG 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]>" 

どのようにチェックが結果を解析することなく、正しかった場合、私は検出することができます:私はから取り得る2つの出力を持っています。

この質問はVerify GPG file signature with Perlに似ているが、II bashであることをしたいと思っ

答えて

6

私はgpgコマンドを知らないのですが、 "間違った"結果と "正しい"結果の終了値が異なっていますか?コマンドを実行した後でこれを確認する最も簡単な方法は、次のようになります。すべてがOKであれば0を返し、そうでなければ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 &&エコーはすべてうまいです||エコーの問題と署名 '?または次のような場合はw/gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz;エコーすべてがうまいです。そうでなければ、署名に問題があります。 fi' – nonchip

1

のGnuPGのmanページから(または非常に必要なPythonの場合。):すべてだった場合

プログラムは0を返します。少なくとも署名が悪い場合は1、致命的なエラーの場合はその他のエラーコードが含まれます。

したがって、の戻りコードを取得するにはhttp://docs.python.org/library/subprocess.htmlを使用できます。