gpg2——使用脚本获取指纹

gpg2——使用脚本获取指纹

我正在尝试从 GPG2 密钥中提取指纹。然后指纹将被传递pass init $GPG2_FINGERPRINT给初始化

在下面的示例中,我想要指纹值0126E6FFD15E33B8BCE7B748E79142F98581FC60

$ gpg2 --list-signatures
pub   rsa2048 2021-10-14 [SCEA]
      0126E6FFD15E33B8BCE7B748E79142F98581FC60
uid           [ unknown] User 1 (User 1) <[email protected]>
sig 3        E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>
sub   rsa2048 2021-10-14 [SEA]
sig          E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>

使用--with-colons子密钥时也会返回指纹。在没有子项信息的情况下如何获得干净的输出?

如果我省略--list-keys并使用--with-fingerprint,我会非常接近...期望显示警告:gpg: WARNING: no command supplied. Trying to guess what you mean。我可以重定向警告以获得干净的输出,但我宁愿使用正确的命令

我还有其他方法可以完成这个任务吗?最终目标是pass通过脚本设置 GPG 密钥(无用户交互)。

$ gpg2 --with-fingerprint --with-colons ./pubring.kbx
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub:-:2048:1:E79142F98581FC60:1634220843:::-:
fpr:::::::::0126E6FFD15E33B8BCE7B748E79142F98581FC60:
uid:::::::::User 1 (User 1) <[email protected]>:
sub:-:2048:1:213A9C4C15D3AAA9:1634220843::::

答案1

使用--with-colons子密钥时也会返回指纹。

该选项--with-colons是正确的选择,因为它以机器可解析的格式发出输出。

在没有子项信息的情况下如何获得干净的输出?

我建议将其管道到awk.的输出--with-colons是标准化的,每行在字段 1 中具有数据类型。任何具有数据类型 的行都pub表示公钥(与子密钥相反),后面的行(数据类型fpr)包含字段 10 中的指纹字符串。

awk由此,通过扫描以“pub:”开头的行并处理后续行中字段 10 中的指纹,解析输出变得很简单。

例如,这将打印密钥环上的所有公钥指纹:

gpg --with-colons -k | awk -F: '/^pub:.*/ { getline; print $10}'

相关内容