linux - bash 将控制权从 expect 返回给用户

标签 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 后与脚本进行交互,但脚本终止,从远程主机注销 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/

相关文章:

linux - wpa_supplicant 将打印消息保留在屏幕上

javascript - bash 上替代 sed 的问题

linux - 转义 linux shell 参数

linux - scp - 传输报告 100% 完成(并已传输),但文件大小不正确

Expect(语言) "couldn' t 编译正则表达式模式: quantifier operand invalid"error

java - 如何计算 GC 暂停时间?

linux - 每个 channel 播放不同的声音

linux - 如何确定我的操作系统是在虚拟化环境还是非虚拟化环境中运行?

linux - 如何将匹配的文件移动到另一个目录?

linux - 了解 LFS 环境设置