来自Ruby的重复响应 - Telnet连接?

时间:2015-09-11 19:35:15

标签: ruby testing ssh telnet net-ssh

我正在尝试实施一个输入API命令的解决方案,并通过Telnet将其传输到硬件设备并捕获响应。我尝试了两种不同的Telnet实现,一种使用Net / SSH,另一种使用Greenletters gem,我可以在两种情况下成功检索响应,但是我得到的输出被发回两次。

test = Greenletters::Process.new("telnet #{@dev_one_ip} #{@port}", :timeout => 5, :transcript => $stdout)

test.start!

test << "<test cmd>\n"
test.wait_for(:output, /(response one)(response two)/)

Expected output:

<test cmd>
Trying 192.168.1.127...
Connected to 192.168.1.127.
Escape character is '^]'.
(response one)(response two)

Actual output:

<test cmd>
Trying 192.168.1.127...
Connected to 192.168.1.127.
Escape character is '^]'.
(response one)(response two)(response one)(response two)

我在两种实现中都看到了这种行为,所以我怀疑这是Telnet逻辑本身的一个问题,但我无法弄清楚问题是什么。我可以通过单独的连接登录并确认输出只返回一次,尽管它与我的脚本重复。

我还注意到如果我用另一个命令跟进这个命令,那么第二个命令似乎根本没有执行,脚本中没有响应,它没有到达设备,我可以通过单独的连接确认

谢谢,全部!

1 个答案:

答案 0 :(得分:0)

我能够为遇到此问题的其他人找到解决方案。我不得不回到最初的Net / Telnet实现并使用可选的&#34; waittime&#34;参数。我为它定义了一个值,它开始捕获整个输出。