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
。它甚至看起来都不在正确的键环中,但它也没有提示。这绝对完美。我以前没有见过设置变量[…]
语法。