我正在编写一个带有 expect 的 bash 脚本。
#!/bin/bash
IP1="a.b.c.d"
IP2="e.f.g.h"
HOST="xyz.com"
KEY="/path/to/key/file"
PORT="sshport"
/usr/bin/expect << EOD
spawn ssh -p $PORT -i $KEY $HOST
expect "*#"
send "sh somescript\r"
expect "Prompt from script:"
send "$IP1\r"
expect "Second Prompt from script"
send "$IP2\r"
interact
EOD
我希望取回控制权,以便用户可以在发送 IP2 后与脚本进行交互,但脚本终止,从远程主机注销 session 。请问有什么指点吗?
谢谢 阿米特
最佳答案
您不是在设置“expect”命令,而只是发送到“expect”的标准输入。
您可以使用“-c”指定期望命令,如下所示,或使用“-f”指定命令文件。
/usr/bin/expect -c "
spawn ssh -p $PORT -i $KEY $HOST
expect \"*#\"
send \"sh somescript\r\"
expect \"Prompt from script:\"
send \"$IP1\r\"
expect \"Second Prompt from script\"
send \"$IP2\r\"
interact
"
关于linux - bash 将控制权从 expect 返回给用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12959748/