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

时间:2016-07-16 11:22:20

标签: bash

有没有办法直接在bashscript中使用pinentry-tty?例如。作为“阅读”的更安全的替代品。我在考虑这样的事情:

local pass=$(pinentry-tty);

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

2 个答案:

答案 0 :(得分:1)

不能以您想要的方式轻松调用不同的pinentry实现。它遵循一个简单的协议,它还提供了几种配置提示和打印错误消息的可能性。一个示例会话,其中GETPINSTDIN上发出的命令,而foo是用户输入的密码,并在STDOUT上返回了其他状态消息:

$ pinentry
OK Pleased to meet you
GETPIN
D foo
OK

完整文档包含在pinentry's source tarball中,但also available online

答案 1 :(得分:0)

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

password=$(echo -e "SETPROMPT Please enter your password:\nGETPIN\n" | \
           pinentry | \
           sed -nr '0,/^D (.+)/s//\1/p')

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