2013-04-30 330 views
4

有一个节点,我可以通过Robot Framework(SSHLibrary.Start Command或Execute Command)远程启动并启动一个脚本。此远程脚本启动到另一个从外部隐藏的节点的telnet连接。这个telnet调用似乎是对机器人的阻塞事件。我使用RIDE执行测试,并停止工作。我可以低效地发送停止信号。是否有可能在ssh中产生telnet?有没有办法在Robot Framework的ssh连接中使用telnet?

回答

2

我们确实没有使用该方法通过telnet,但与其他SSH会话或者说我们不能以其他方式访问其他炮弹...

打开一个SSH连接到第一机器。 在此连接上,使用SSHLibrary关键字,如设置提示,写入和读取或读取直到提示以手动打开到下一台计算机的Telnet连接。 写和读关键字可以使用有点像期待和产卵...

+0

写和读直到提示组合似乎工作。以前我试图用Start Command和Execute Command启动telnet而没有成功。现在我从telnet得到提示,但是我不能再发送任何命令。但是,我正确设置了提示,测试失败并显示“未找到匹配项”/这里有一个换行符/'在3秒钟内“。我无能为力。 – Milo 2013-05-02 08:33:52

3

一切是可能的。

让我们描述一下你的场景:机器人框架在机器A上运行。测试将A连接到机器B,通过ssh和B通过telnet连接到机器C.

从你的问题不清楚测试卡在哪一步。测试是否确实建立了telnet连接? telnet进程实际上是从B启动的吗?

在这里你应该考虑两个相关的问题。

第一个是Robot Framework在单线程中执行测试。这意味着在关键字返回之前,测试确实执行了而非进度。如果要在测试继续时打开telnet会话,则必须使用SSHLibrary.start命令而不是执行命令

第二点是控制编程式的远程登录会话。 telnet客户端必须支持某种批处理执行(例如不要求输入密码或刷新输入)。确保你能够从测试中在C上发出命令。您应该可以使用写入关键字来重定向C的命令。您可以通过从其标准输入中搜索命令文件来检查telnet客户端的工作情况。像

cat commands_for_c.txt | telnet ...to..c... 
+0

您对我的场景的描述是正确的。早些时候,我尝试使用Start Command和Execute Command启动telnet。然后看起来好像连接没有建立。现在我只使用Write,并从telnet获取提示,但Robot似乎忘记了我的提示预设或其他内容。看到我对sdmythos_gr的回答的其他评论。 – Milo 2013-05-02 08:37:19

+0

带管道的猫可能是一个很好的方式去做这件事......如果我没有弄错,设置的提示功能已经在最新的sshlibrary中发生了变化,并且可能有一种情况是每个连接只设置一次。在测试中,我们使用以前版本的ssh库之一(我认为0.9),所以在任何写入命令之前,我们设置了预期的提示。即设置提示密码:然后写入密码。然后设置提示符>然后写命令... – 2013-05-02 09:14:45

+0

我看了一下SSH库的更改日志。根据我的理解,这表示过去全局设置的提示(并且可以根据需要多次更改)以及所有连接都使用该提示,但现在每个连接都可以有自己的提示。 – Milo 2013-05-02 12:04:24

相关问题