在bash脚本中使用pinentry tty(如read)

在bash脚本中使用pinentry tty(如read),bash,Bash,有没有一种方法可以直接在bashscript中使用pinentry tty?例如,作为“读取”的更安全的替代品。我在想这样的事情: local pass=$(pinentry-tty); 这允许我输入几行,但没有任何内容保存到变量中 不同的pinentry实现不能以您想要的方式轻松调用。它遵循一个简单的协议,该协议还允许配置提示和打印错误消息。示例会话,GETPIN是在STDIN上发出的命令,foo是用户输入的密码短语,在STDOUT上返回其他状态消息: $pinentry 好的,很高兴认识你

有没有一种方法可以直接在bashscript中使用pinentry tty?例如,作为“读取”的更安全的替代品。我在想这样的事情:

local pass=$(pinentry-tty);

这允许我输入几行,但没有任何内容保存到变量中

不同的
pinentry
实现不能以您想要的方式轻松调用。它遵循一个简单的协议,该协议还允许配置提示和打印错误消息。示例会话,
GETPIN
是在
STDIN
上发出的命令,
foo
是用户输入的密码短语,在
STDOUT
上返回其他状态消息:

$pinentry
好的,很高兴认识你
格特平
德福
好啊

完整的文档包含在中,但是。

虽然这不适用于所有的pinentry实现,但您可以尝试按如下方式调用它:

password=$(echo-e“SETPROMPT请输入您的密码:\nGETPIN\n”|\
松林垂|\
sed-nr“0,/^D(+)/s/\1/p”)

在我的Arch机器上,这适用于
pinentry-gnome3
pinentry-gtk-2
pinentry qt
-但不适用于
pinentry curses
pinentry tty

谢谢,这对其他情况很有帮助。但是在这里,我正在寻找一种在gpg之外使用它的方法。