我正在尝试实施一个输入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逻辑本身的一个问题,但我无法弄清楚问题是什么。我可以通过单独的连接登录并确认输出只返回一次,尽管它与我的脚本重复。
我还注意到如果我用另一个命令跟进这个命令,那么第二个命令似乎根本没有执行,脚本中没有响应,它没有到达设备,我可以通过单独的连接确认
谢谢,全部!
答案 0 :(得分:0)
我能够为遇到此问题的其他人找到解决方案。我不得不回到最初的Net / Telnet实现并使用可选的&#34; waittime&#34;参数。我为它定义了一个值,它开始捕获整个输出。