4

有一个节点,我通过 Robot Framework(SSHLibrary.Start 命令或执行命令)远程启动脚本。这个远程脚本启动到另一个从外部隐藏的节点的 telnet 连接。这个 telnet 调用对 Robot 来说似乎是一个阻塞事件。我使用 RIDE 进行测试执行,它只是停止工作。我可以低效地发送停止信号。是否可以在 ssh 中生成 telnet?

4

3 回答 3

3

一切皆有可能。

让我们将您的场景描述为:Robot Framework 在机器 A 上运行。测试通过 ssh 将 A 连接到机器 B,通过 telnet 将 B 连接到机器 C。

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

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

首先是 Robot Framework 在单线程中执行测试。这意味着在关键字返回之前,测试不会进行如果您希望在测试继续时打开 telnet 会话,则必须使用SSHLibrary.start 命令而不是执行命令

第二点是以编程方式控制 telnet 会话。telnet 客户端必须支持某种批处理执行(例如不询问密码或刷新输入)。确保您能够通过测试在 C 上发出命令。您应该能够使用write关键字重定向 C 的命令。您可以通过 cat-ting 标准输入中的命令文件来检查 telnet 客户端是否正常工作。就像是

cat commands_for_c.txt | telnet ...to..c...
于 2013-05-01T15:35:53.930 回答
2

我们还没有完全使用 telnet 的方法,而是使用另一个 ssh 会话或其他我们无法访问的 shell...

打开到第一台机器的 ssh 连接。在此连接上,使用 SSHLibrary 关键字(如 Set Prompt、Write and Read 或 Read Until Prompt)手动打开到下一台计算机的 telnet 连接。Write 和 Read 关键字的使用有点像 expect 和 spawn...

于 2013-05-01T08:49:32.223 回答
1

嗨,我使用 ssh 连接在 Robot Framework 中发送 telnet 命令,如下所示:

SSHLibrary.Open Connection    host=***    port=22    timeout=60    alias=ssh    prompt=:~ >
SSHLibrary.Login    username=***    password=***    delay=1s
SSHLibrary.Switch Connection    index_or_alias=ssh
SSHLibrary.Write    lxc-attach -n 0x1018
SSHLibrary.Read Until Prompt
SSHLibrary.Write    telnet 1.2.3.4 2323
SSHLibrary.Read Until    $
SSHLibrary.Write    sendX 1115 1 0 0 0 0
SYSTEM Close SSH Connection
于 2018-09-06T12:31:37.747 回答