bash从期望中将控制权返回给用户

时间:2012-10-18 16:50:59

标签: linux bash expect

我正在编写一个带有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后可以与脚本进行交互,但脚本会终止,从远程主机注销会话。有什么指针吗?

谢谢 阿米特

1 个答案:

答案 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
"