今天的问题是:
If i have an expect script which simply automate some basic telnet operations but sometimes the server "bad act" and close the connections can i handle it and avoid to wait for some timeout occurs?
一些规范:
当服务器断开连接时,我在控制台上打印的字符串是经典的“外部主机关闭的连接”。
期望的telnet自动化必须发送的操作如下:
身份验证阶段:
← 等待提示
→ 发送用户名
← 等待密码
→发送密码
← 等待提示
命令和输出阶段:
→ 发送命令字符串(一般是一些很简单的词:“voltage”、“temp”)
← 等待整个输出一般要等到下一个提示才干。 (输出包含许多符号和变量值,因此等待提示似乎是一个不错的策略。)
连接关闭阶段:
→发送“退出”命令
← 等待合法“外部主机关闭连接”。
注意:
“连接被外部主机关闭”。可以在任何时刻发生,例如在任何阶段。详细地说,我有兴趣了解在等待提示或输出(步骤 1、3、5、7)而不是等待连接终止时是否可以解决此问题。
向大家致以最诚挚的问候,感谢愿意提供帮助的人!
注意安全,
卢卡
最佳答案
生成后,您可以设置一个expect_before
命令(一次),该命令将在您的脚本每次执行expect
时执行。例如
expect_before "Connection closed" { send_user "Unexpected close" ; exit 1 }
参见 example
关于Bash 期望 Telnet : handle premature connection close by server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61508105/