GPG密钥是否存在于列表中?

时间:2015-05-01 11:57:13

标签: bash shell gnupg

我想创建一个shell脚本,之前我还没有使用它。 gpg有一个命令:

gpg --keyserver SERVER --recv-keys  KEY

问题是如果已添加密钥,我不想运行此命令。是否有任何方法可以检查密钥列表中是否存在密钥? 谢谢!

2 个答案:

答案 0 :(得分:7)

运行gpg --list-keys [key-id](或缩写的命令-k),如果存在匹配的密钥,则返回代码为0(成功),否则返回其他内容(失败)。不要按照评论中其他人的建议列出所有密钥和grep,否则密钥环中的大量密钥会慢慢 。运行

gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id]

获取丢失的密钥,可能会丢弃第一个gpg呼叫的输出(gpg --list-keys [key-id] >/dev/null 2>&1 || ...),因为您只对返回代码感兴趣。

请注意

答案 1 :(得分:1)

你可以这样做:

[[ $(gpg --list-keys | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys  KEY

附加(适用于密钥环):

[[ $(apt-key list | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys  KEY

如果apt-key可用