在 Expect 中询问可能缓存的密码
Ask for a possibly cached password in Expect
我想做一些类似
的事情
systemd-ask-password --keyname=domain:pw --accept-cached Password:
来自 Expect。此命令可以正常工作,从终端到 return 缓存的密码(如果它已经存在)或提示输入它并 然后 缓存它。但是,我还没有找到一种方法让它与 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
,但我得到的结果与此相同
在 tty 上进行 systemd-ask-password
或 keyctl
提示的正确语法是什么?
如果我将其作为一个 stand-alone 的事情来做 运行 作为衍生的子进程,我预计会以这样的方式启动它:
spawn systemd-ask-password --keyname=domain:pw --accept-cached Password:
send
这样做的唯一原因是如果有一个 shell 被控制在我们希望它为我们执行的地方(也许是因为它将 运行在远程计算机上)。
可能需要自动处理可能的密码请求和管理结果。当然。但是为了测试,在 spawn
之后放一个 interact
命令,这样你就可以直接与子进程 (as-if-it-was) 对话。
我想你的意思是 运行 使用你当前所在的 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
我想做一些类似
的事情systemd-ask-password --keyname=domain:pw --accept-cached Password:
来自 Expect。此命令可以正常工作,从终端到 return 缓存的密码(如果它已经存在)或提示输入它并 然后 缓存它。但是,我还没有找到一种方法让它与 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
,但我得到的结果与此相同
在 tty 上进行 systemd-ask-password
或 keyctl
提示的正确语法是什么?
如果我将其作为一个 stand-alone 的事情来做 运行 作为衍生的子进程,我预计会以这样的方式启动它:
spawn systemd-ask-password --keyname=domain:pw --accept-cached Password:
send
这样做的唯一原因是如果有一个 shell 被控制在我们希望它为我们执行的地方(也许是因为它将 运行在远程计算机上)。
可能需要自动处理可能的密码请求和管理结果。当然。但是为了测试,在 spawn
之后放一个 interact
命令,这样你就可以直接与子进程 (as-if-it-was) 对话。
我想你的意思是 运行 使用你当前所在的 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