如何防止从标准输入数据时"期望"在EOF退出?



当我运行echo "passphrase" | expect expect.exp "hostname"时,一切正常,但expect立即退出。

期望.exp

#!/usr/bin/expect
set passphrase [gets stdin]
set hostname [lindex $argv 0]
spawn ssh admin@$hostname
expect "passphrase"
send "$passphraser"
expect "admin@$hostname"
send "clearr"
interact

stdin不是 tty 时,interact不起作用。您可以将密码作为命令行选项传递,就像主机名一样。

您可能希望使用环境来传递密码:

# shell code
export passphrase="pass phrase"
expect expect.exp hostname
# expect code
...
send "$env(passphrase)r"

最新更新