Tcl 在Expect中请求可能缓存的密码

Tcl 在Expect中请求可能缓存的密码,tcl,expect,Tcl,Expect,我想做一些类似的事情 systemd-ask-password --keyname=domain:pw --accept-cached Password: 出乎意料。该命令在终端上运行良好,可以返回缓存的密码(如果密码已经存在),也可以提示输入密码,然后缓存密码。但是,我还没有找到一种方法使它与expect交互 send "systemd-ask-password --keyname=domain:pw --accept-cached Password:\r" 不产生与之

我想做一些类似的事情

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"
表示
”:没有这样的文件或目录…
,这意味着生成的进程甚至没有使用相同的密钥环

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


在tty上设置
systemd ask password
keyctl
提示符的正确语法是什么?

如果我要作为一个独立的东西来运行,作为一个派生的子进程,我希望用如下方式启动它:

spawn systemd-ask-password --keyname=domain:pw --accept-cached Password:
send
ing的唯一原因是,如果有一个shell被控制在我们希望它为我们执行的位置(可能是因为它将在远程计算机上运行)


可能需要自动处理可能的密码请求和管理结果。当然。但是为了进行测试,请在
spawn
之后放置
interactive
命令,以便您可以与子流程对话(就好像是这样)直接。

我想您是想使用当前所在的tty运行命令。这可以使用
exec
完成。例如,下面的shell交互(
***
就是我键入的
none
):


$cat正如我所说,我使用了
spawn
。它甚至看起来都不在正确的键环中,但它也没有提示。这绝对完美。我以前没有见过
设置变量[…]
语法。