3

我正在编写一个带有期望的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 后与脚本交互,但脚本终止,从远程主机注销会话。请问有什么指点吗?

谢谢阿米特

4

1 回答 1

3

您没有设置“期望”命令,而只是发送到“期望”的标准输入。

您可以使用“-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
"
于 2012-10-18T20:42:38.890 回答