Linux

如何僅獲取 gpg –list-public-keys 的 pub 部分?

  • December 23, 2018

好的,可能有更好的方式來表達這個問題。我正在編寫一個腳本來在第一次啟動時配置我的 Web 伺服器,但是在生成將用於加密備份的 GPG 密鑰時遇到了問題。

我正在使用它來生成密鑰而無需使用者互動,但我需要一種方法來僅獲取 pub 下的數字以將其扔到稍後將在腳本中重複使用的文件中。

我需要這個:

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 <root@madpony.co>
sub   rsa3072 2018-11-10 [E] [expires: 2020-11-09]

變成這樣:

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

那可能嗎?我查看了 GPG 的手冊頁,似乎沒有命令,所以我猜我需要將*–list-public-keys*傳遞給 sed?但我不知道我需要使用什麼正則表達式來解決這個難題。

提前致謝!

首先,您需要使用--with-colons輸出模式來編寫腳本。然後,為了只抓取公鑰的指紋,我曾經sed縮小到pub部分並cut到達該欄位的第 10 個fpr欄位:

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

如果您有多個鍵,它會將它們中的每一個列印在自己的一行上。

引用自:https://serverfault.com/questions/941254