Назад | Перейти на главную страницу

Как получить только часть pub из 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-открытые-ключи в sed? Но я понятия не имею, какое регулярное выражение мне нужно было бы использовать, чтобы получить именно этот кусок головоломки.

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

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

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

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