我正在编写一个带有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后可以与脚本进行交互,但脚本会终止,从远程主机注销会话。有什么指针吗?
谢谢 阿米特
答案 0 :(得分:3)
您没有设置“expect”命令,只是发送到“expect”的标准输入。
您可以使用“-c”指定如下所示的expect命令,或使用“-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
"