Bashスクリプトで複数のGPGキーに署名する方法(非対話型)

Bashスクリプトで複数のGPGキーに署名する方法(非対話型)

私たちのチームのためにいくつかのキーを設定しています。インポートしたすべての(既知の)キーに署名するbashスクリプトを作成したいと思います。メッセージを表示せず(非対話型)キーに署名したいと思います。

これが私が持っているものです。

for key in $(gpg2 -k --with-colons | grep pub: | cut -d ":" -f 5); do
  gpg2 --fingerprint $key
  # TODO: check if the key is already signed; if not, sign it
  gpg2 --batch --yes --sign-key $key
done

上記にはチェックがありません(キーがすでに署名されている場合、gpg2が正しい操作を実行しているように見えるため、問題はありません)。しかし、もっと重要なのは、「はい」というプロンプトには応答できないことです。

他の関連する質問には、対話型操作を必要とする回答が含まれています(xdotoolを使用してキーストロークを入力することがありますが、気に入らない)。

答え1

出力を確認できますgpg --export-ownertrust

たとえば、

FP="9274E588E866A10B713C9CCD9EB3AD425D1CCC11"
echo "Checking Trust for $FP" 
TRUST_LEVEL=$(gpg --export-ownertrust| grep $FP | awk  -F : '{print $2}')
case $TRUST_LEVEL in
    2)
        echo "I don't know or won't say (export: 2)"
        ;;
    3)
        echo "I do NOT trust            (export: 3)"
        ;;
    4)
        echo "I trust marginally        (export: 4)"
        ;;
    5)
        echo "I trust fully             (export: 5)"
        ;;
    6)
        echo "I trust ultimately        (export: 6)"
        ;;
    *)
        echo -n "Trust level unknown, key not imported or not signed?"
        ;;
esac

関連情報