首页 > 解决方案 > 在 Expect 中请求可能缓存的密码

问题描述

我想做一些类似的事情

systemd-ask-password --keyname=domain:pw --accept-cached Password:

来自期待。此命令可以从终端正常工作,如果它已经存在则返回缓存的密码,或者提示输入它然后缓存它。但是,我还没有设法让它与expect.

send "systemd-ask-password --keyname=domain:pw --accept-cached Password:\r"

不产生可与之交互的输出,并且

spawn "systemd-ask-password --keyname=domain:pw --accept-cached Password:\r"

": no such file or directory...这意味着生成的进程甚至没有使用相同的密钥环。

我很乐意使用较低的级别keyctl,但我得到了相同的结果

systemd-ask-password在 tty 上制作或keyctl提示的正确语法是什么?

标签: tclexpect

解决方案


我认为您的意思是使用您当前所在的 tty 运行命令。这可以使用exec. 例如,下面的 shell 交互(****是我输入的地方none):

$ cat <<\! >myprog
set pw [exec systemd-ask-password --keyname=domain:pw --accept-cached Password:]
send_user "you said pw=$pw\n"
!
$ expect myprog
Password: ****
you said pw=none
$ expect myprog
you said pw=none

推荐阅读