【问题标题】:Bash Expect Telnet: handle premature connection close by serverBash Expect Telnet:处理服务器关闭的过早连接
【发布时间】:2020-08-13 21:55:43
【问题描述】:

今天的问题是:

如果我有一个期望脚本,它只是自动化一些基本的 telnet 操作,但有时服务器“坏行为”并关闭 连接我可以处理它并避免等待一些超时 发生了吗?

一些规格:
当连接被服务器断开时,我在控制台上打印的字符串是经典的“连接被外部主机关闭”。

expect telnet 自动化必须发送的操作如下:

认证阶段:

  1. ←等待提示

  2. → 发送用户名

  3. ←等待密码

  4. → 发送密码

  5. ←等待提示

命令和输出阶段:

  1. →发送一个命令字符串(一般很简单的一个字:“电压”、“温度”)

  2. ← 等待整个输出一般要等到下一个提示才行。 (输出包含许多符号和变量值,因此等待提示似乎是一个不错的策略。)

连接关闭阶段:

  1. → 发送“退出”命令

  2. ← 等待合法“连接被外部主机关闭。”

注意:

“连接被外部主机关闭。”可以在任何时刻发生,例如在任何阶段。详细地说,我有兴趣了解在等待连接终止的提示或输出(步骤 1、3、5、7)时是否可以解决此问题。

向大家致以最诚挚的问候,并感谢愿意提供帮助的人!
保持安全,
卢卡

【问题讨论】:

    标签: bash connection timeout expect telnet


    【解决方案1】:

    在生成之后,您可以设置一个 expect_before 命令(一次),该命令将在您的脚本每次执行 expect 时执行。例如

    expect_before "Connection closed" { send_user "Unexpected close" ; exit 1 }
    

    example

    【讨论】:

    • 哦,太好了!又好又顺。我会试一试!感谢您的回答。
    猜你喜欢
    • 2017-04-05
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2018-12-25
    • 2011-07-26
    • 2018-11-09
    相关资源
    最近更新 更多