GPG 密钥存在于列表中?
GPG key exists in the list?
我想创建一个 shell 脚本,但我以前没有使用过它。
有一个 gpg 命令:
gpg --keyserver SERVER --recv-keys KEY
问题是如果密钥已经添加,我不想运行这个命令。有什么方法可以检查密钥列表中是否存在密钥?
谢谢!
你可以这样做:
[[ $(gpg --list-keys | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys KEY
附加(用于 apt 密钥环):
[[ $(apt-key list | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys KEY
如果 apt-key
可用
运行 gpg --list-keys [key-id]
(或缩写命令 -k
),如果存在匹配键,则 return 代码为 0(成功),或者其他否则(失败)否则。不要像其他人在评论中建议的那样在之后列出所有密钥和 grep
,对于密钥环中的大量密钥,这将 可怕地 变慢。 运行
gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id]
获取丢失的密钥,可能会丢弃第一个 gpg
调用的输出 (gpg --list-keys [key-id] >/dev/null 2>&1 || ...
),因为您只对 return 代码感兴趣。
请注意
- 不时更新密钥可能是获取撤销的合理做法
- 特别是short key IDs should never be used,尽可能使用整个指纹。
正确的做法是运行下面的命令
gpg --keyserver hkp://keyserver.ubuntu.com -k [your-key-id]
我想创建一个 shell 脚本,但我以前没有使用过它。 有一个 gpg 命令:
gpg --keyserver SERVER --recv-keys KEY
问题是如果密钥已经添加,我不想运行这个命令。有什么方法可以检查密钥列表中是否存在密钥? 谢谢!
你可以这样做:
[[ $(gpg --list-keys | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys KEY
附加(用于 apt 密钥环):
[[ $(apt-key list | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys KEY
如果 apt-key
可用
运行 gpg --list-keys [key-id]
(或缩写命令 -k
),如果存在匹配键,则 return 代码为 0(成功),或者其他否则(失败)否则。不要像其他人在评论中建议的那样在之后列出所有密钥和 grep
,对于密钥环中的大量密钥,这将 可怕地 变慢。 运行
gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id]
获取丢失的密钥,可能会丢弃第一个 gpg
调用的输出 (gpg --list-keys [key-id] >/dev/null 2>&1 || ...
),因为您只对 return 代码感兴趣。
请注意
- 不时更新密钥可能是获取撤销的合理做法
- 特别是short key IDs should never be used,尽可能使用整个指纹。
正确的做法是运行下面的命令
gpg --keyserver hkp://keyserver.ubuntu.com -k [your-key-id]