Как получить только часть паба 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
Если у вас есть несколько ключей, каждый из них будет напечатан в отдельной строке.