如何在 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

相关内容