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