我想创建一个shell脚本,但我以前没有使用过它。有一个用于 gpg 的命令:
gpg --keyserver SERVER --recv-keys KEY
问题是,如果已经添加了密钥,我不想运行此命令。有什么方法可以检查密钥列表中是否存在密钥?谢谢!
运行gpg --list-keys [key-id]
(或缩写命令 -k
),如果存在匹配键,则返回代码为 0(成功),否则返回代码为 0(失败)。不要按照其他人在评论中的建议列出所有键和事后grep
,这对于密钥环中的大量键会变得非常慢。跑
gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id]
获取丢失的键,可能会丢弃第一个gpg
调用的输出(gpg --list-keys [key-id] >/dev/null 2>&1 || ...
),因为您只对返回代码感兴趣。
请注意
- 不时更新密钥可能是获取吊销的合理做法
- 特别是切勿使用短密钥ID,如果可能,请使用整个指纹。
你可以做:
[[ $(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
可用
正确的方法是运行以下命令
gpg --keyserver hkp://keyserver.ubuntu.com -k [your-key-id]