[英]How can I prevent `expect` from exiting at EOF when reading data from stdin?
When I run echo "passphrase" | expect expect.exp "hostname"
当我运行
echo "passphrase" | expect expect.exp "hostname"
echo "passphrase" | expect expect.exp "hostname"
, everything works fine, but expect
exits immediately. echo "passphrase" | expect expect.exp "hostname"
,一切工作正常,但expect
马上退出。
#!/usr/bin/expect
set passphrase [gets stdin]
set hostname [lindex $argv 0]
spawn ssh admin@$hostname
expect "passphrase"
send "$passphrase\r"
expect "admin@$hostname"
send "clear\r"
interact
interact
does not work when stdin is not a tty. 当stdin不是tty时,
interact
不起作用。 You can pass the password as a command line option, just like the hostname. 您可以像主机名一样将密码作为命令行选项传递。
You might want to use the environment to pass the passphrase: 您可能想使用环境来传递密码:
# shell code
export passphrase="pass phrase"
expect expect.exp hostname
# expect code
...
send "$env(passphrase)\r"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.