0

cygwin中使用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
使用键盘交互认证。
输入您的 UDS
密码:Passw0rd

远程工作目录是 /home/
myID psftp>

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

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

$ psftp unixftpsrvr
login as: myID
Enter your UDS Password:
远程工作目录是 /home/
myID psftp>

密码根本不显示。

这似乎是期望方面的更多问题。

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

如何禁止以明文形式显示密码?

4

1 回答 1

0

在关闭 ECHO 之前,密码可能发送得太早。所以尝试sleep 1expect "Password:".

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

expect "Password:"
log_user 0; # disable logging to stdout
send "password\r"
log_user 1
于 2016-08-20T14:36:34.640 回答