首页 > 解决方案 > 解密文件时如何正确捕获 gpg 输出?

问题描述

我已经为此工作了一段时间。我有一个在 docker 容器内运行的 bash 脚本,用于解密特定文件路径下的 gpg 文件。

我想捕获 gpg 的输出以确定:

  1. 是否解密成功
  2. 是否未能验证文件发件人的签名

我了解到,打印到终端的 gpg 消息不会发送到 stdout 或 stderr,所以我需要找到另一种方法来捕获它,并想出了这个:

script --return -qc 'gpg --status-fd --pinentry-mode=loopback --passphrase="'"$password"'" --output "'"$dst"'" --decrypt "'"$src"'"' -t output.txt

然后,我可以 cat 在 output.txt 文件中,并 sed 获取返回码,并查找任何感兴趣的错误。

可悲的是。--status-fd 标志似乎撤消了 --pinentry-mode=loopback,并且密码不再传递给它,它会提示输入它。

有没有:

  1. 一种不同的方式来捕获不会破坏我需要的标志的输出
  2. 另一种聪明的方法是我可以解密文件并以不同的方式传递密码来解决它?

或者其他建议?

标签: encryptioncommand-line-interfacegnupg

解决方案


推荐阅读