Как получить только часть паба gpg --list-public-keys?

Хорошо, возможно, есть лучший способ сформулировать этот вопрос. Я пишу сценарий для настройки моих веб-серверов при первой загрузке, но я столкнулся с проблемой при создании ключа 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? Но я понятия не имею, какое регулярное выражение мне нужно будет использовать, чтобы получить только этот кусочек головоломки.

Заранее спасибо!

1 ответ

Решение

Во-первых, вы хотите использовать --with-colons Режим вывода для сценариев. Затем, чтобы получить только отпечатки открытых ключей, я использовал sed сузить до только pub часть и cut чтобы добраться до 10-го поля fpr поле:

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

Если у вас есть несколько ключей, каждый из них будет напечатан в отдельной строке.

Другие вопросы по тегам