Linux
如何僅獲取 gpg –list-public-keys 的 pub 部分?
好的,可能有更好的方式來表達這個問題。我正在編寫一個腳本來在第一次啟動時配置我的 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
如果您有多個鍵,它會將它們中的每一個列印在自己的一行上。