如何仅获取 gpg --list-public-keys 的 pub 部分?

如何仅获取 gpg --list-public-keys 的 pub 部分?

好吧,可能有更好的方法来表述这个问题。我正在编写一个脚本来在第一次启动时配置我的 Web 服务器,但是在生成将用于使用 duplicity 加密备份的 GPG 密钥时遇到了障碍。

我是使用这个无需用户交互即可生成密钥,但我需要一种方法来仅获取 pub 下的数字,然后将其放在稍后脚本中的 duplicity 将会使用的文件上。

我需要这个:

jamespond@penelope:~$ gpg --list-public-keys
/home/jamespond/.gnupg/pubring.kbx
----------------------------------
pub   rsa3072 2018-11-10 [SC] [expires: 2020-11-09]
      8304C92D7F77938BCE05A1619FC07FF505D443D3
uid           [ultimate] James Pond <[email protected]>
sub   rsa3072 2018-11-10 [E] [expires: 2020-11-09]

变成这样:

jamespond@penelope:~$ gpg --list-public-keys | somecommand
8304C92D7F77938BCE05A1619FC07FF505D443D3

这可能吗?我查看了 GPG 的手册页,似乎没有这样的命令,所以我猜我需要使用管道--列表公钥到 sed?但我不知道需要使用什么正则表达式才能得到这个难题。

提前致谢!

答案1

首先,您需要使用--with-colons输出模式进行脚本编写。然后,为了仅获取公钥的指纹,我曾经sed将范围缩小到仅一部分pub,并cut到达该fpr字段的第 10 个字段:

gpg --list-public-keys --with-colons \
    | sed -ne '/^pub:/,/^fpr:/ { /^fpr:/ p }' \
    | cut -d: -f10

如果您有多个密钥,它将在一行上打印每个密钥。

相关内容