【问题标题】:How to automate ctrl+d action in the ssh expect script in bash?如何在 bash 中的 ssh 期望脚本中自动执行 ctrl+d 操作?
【发布时间】:2019-09-13 15:32:33
【问题描述】:

我有一个用例,我需要在通过 ssh 连接到主机后执行命令。命令执行后,我需要执行 Ctrl-D 和 Ctrl-M 才能发出其他命令。

我尝试使用 EOF,但它完全关闭了会话。

expect << EOF
spawn ssh -o StrictHostKeyChecking=no LocalCOMUser@$nodeIp -p $ssh_port

expect {
         "password:" {}
          timeout { send_user "Timed out in ssh connection" ;exit 1}
}

send "p@ssword\r"
expect {
         ">" {}
          timeout { send_user "Timed out in ssh connection" ;exit 1}
}

set timeout 120
send "mml\r"
expect {
         "<" {}
          timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "$command1\r"
expect {
         "<" {}
}
send "exit;\r"
expect {
         ">" {}
          timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "exit\r"

EOF

需要一个执行 Ctrl-d 操作的命令。

【问题讨论】:

    标签: linux bash ssh expect


    【解决方案1】:

    您可以通过发送 ^D/ 字符来模拟按下 Ctrl-D:

    send "\x04"
    

    【讨论】:

    • Ctrl-M 是十进制的 13,所以是十六进制的 d,所以是 \x0d,但这与您已经使用的 \r 相同。更多代码,可以通过执行man ascii查阅表格(按“q”退出)。例如:对于 Ctrl-X,您在表格的右侧找到字符 X,然后沿着左侧的同一行查找 Ctrl-X 的 Hex 代码; \x18.
    • 再次感谢!这对我很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2020-03-27
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2014-09-20
    相关资源
    最近更新 更多