期望以明文形式回显密码

Expect echo password in clear text

cygwin.[=13= 中使用 bash/expect 自动化 psftp ]

我有一个非常小的脚本文件 yftp.exp,代码为:

#!/usr/bin/expect -f
spawn psftp unixftpsrvr
expect "login as: "
send "myID\r"
expect "Password:"
send "Passw0rd\r"
expect "psftp>"

输出:

$ ./yftp.exp
spawn psftp unixftpsrvr
login as: myID
Using keyboard-interactive authentication.
Enter your UDS
Password: Passw0rd

Remote working directory is /home/myID
psftp>

密码以明文形式打印出来!!!

如果我运行直接用psftp命令。这是输出:

$ psftp unixftpsrvr
login as: myID
Enter your UDS Password:
Remote working directory is /home/myID
psftp>

密码根本不显示。

这似乎是预期方面的问题。

我不关心 expect 脚本文件中的明文密码,我关心输出中的明文密码!

如何禁止明文显示密码?

密码可能在 ECHO 关闭之前过早发送。所以尝试在 expect "Password:".

之后添加 sleep 1

如果这不起作用,请尝试这样:

expect "Password:"
log_user 0; # disable logging to stdout
send "password\r"
log_user 1