RUBY 脚本:连接到 Telnet 会话时等待任何输出

Posted

技术标签:

【中文标题】RUBY 脚本:连接到 Telnet 会话时等待任何输出【英文标题】:RUBY script: Wait for ANY output when connected to Telnet session 【发布时间】:2016-12-19 05:45:33 【问题描述】:

我正在使用 ruby​​ 脚本向 UT 发送命令。我已成功建立到远程 UT 的 telnet 会话。发送的命令执行一系列操作并给我统计数据。

最初,在成功发送命令后,我设计了 UT 向接收到的脚本发送 OK。我如何接收统计信息?脚本事先不知道命令的输出,每个命令都有自己的字符串。

使用 ruby​​,我怎样才能告诉 telnet::waitfor() 命令等待这么长时间,但如果 UT 发送了一些东西就会中断?

为了阅读OK,我使用了:

response=@newSession.waitfor("String" => "OK\n", "Timeout" => time_out)

其中,newSession 持有 telnet 会话连接。

@newSession = Net::Telnet::new("Session"        => @session,
                                    "Host"      => @ut_ip,
                                    "Port"      => @port_num,
                                    "Timeout"   => 10,
                                    "Prompt"    => /[$%#>] \z/n)

我不能使用“匹配”或“提示”,因为我不知道我会得到什么。!帮帮我。。谢谢。

【问题讨论】:

【参考方案1】:

让我们阅读Net::Telnet上的文档:

对于某些协议,可以在创建 Telnet 对象并使用 cmd() 调用时指定一次 Prompt 选项;对于其他人,您必须指定要查找的响应序列作为每个cmd() 调用的匹配选项,或直接调用puts()waitfor()对于其他人,您必须使用 sysread() 而不是 waitfor() 并自己解析服务器响应

所以,您将自己处理IO#preprocess 它。

【讨论】:

以上是关于RUBY 脚本:连接到 Telnet 会话时等待任何输出的主要内容,如果未能解决你的问题,请参考以下文章

为 Telnet 会话创建脚本?

PHP 连接到 Telnet 服务器

Telnet使用

当连接到用 PHP 实现的 Telnet/sockets 服务器时,PuTTY 显示奇怪的字符

Bash 和期望:无法通过 telnet 重新启动路由器

在 NodeJS 中连接到远程登录服务器