python - 机器人在 SSH 连接中获取 Telnet.Execute 命令的输出
问题描述
我试图让Telnet.Execute Command
我的 telnet 连接的输出在 SSH 连接内。
如果我尝试${saida}= SSHLibrary.Execute Command ls
,我可以获得ls
命令的输出,但如果我尝试${saida}= SSHLibrary.Execute Command Telnet.Execute Command dir
,我期望dir
[on the Telnet.Execute Command
] 命令的输出被传递给SSHLibrary.Execute Command
但它不是。
我怎样才能得到的输出Telnet.Execute Command
?
Library SSHLibrary
Library Telnet
Suite Setup Open Connection And Log In
Suite Teardown SSHLibrary.Close All Connections
*** Variables ***
${HOST} OMITTED.70
${Other-Host} OMITTED.1
${OTHER-USERNAME} OMITTED
${OTHER-PASSWORD} OMITTED
${USERNAME} OMITTED
${PASSWORD} OMITTED
*** Test Cases ***
Acessando OLT para testes
SSHLibrary.Execute Command Telnet.Open Connection ${Other-Host}
SSHLibrary.Execute Command Telnet.Login ${OTHER-USERNAME} ${OTHER-PASSWORD} password_prompt=password
Verificando a saída do terminal
${saida}= SSHLibrary.Execute Command Telnet.Execute Command dir
BuiltIn.Log to console ${saida}
*** Keywords ***
Open Connection And Log In
SSHLibrary.Open Connection ${HOST}
SSHLibrary.Login ${USERNAME} ${PASSWORD}
解决方案
从评论:
我实现了在 ssh 连接中使用 telnet,但我想使用 Telnet 库
你不能这样做,有两个原因。
首先,Telnet 库(我能想到的几乎所有 RF 库)都是为本地使用而设计的——当您开始您的案例时,它会在您的本地机器和本地 python 解释器中实例化。您对其(lib)进行的所有调用都在本地计算机上完成。
因此 - 它不会在您通过 ssh 连接的机器上运行。
另一个原因是 - Robot Framework 不支持将“另一个关键字的返回值”作为参数传递;例如,如果您想这样做,您必须将另一个关键字的返回值存储在临时变量中,并将其传递给第一个关键字。
换句话说,在这一行中:
SSHLibrary.Execute Command Telnet.Open Connection ${Other-Host}
,您实际上是在传递字符串“Telnet.Open Connection”和 的值${Other-Host}
,您没有调用关键字Telnet.Open Connection
。
推荐阅读
- python - ValueError:没有足够的值来解包(预期 4,得到 2)
- javascript - 滚动时更改链接颜色
- c++ - 无法在 SSL 中验证证书
- c++ - NBody 问题并行化对于相同的输入给出不同的结果
- python - 如何编辑熊猫数据框中列的所有值?
- plugins - 删除插件 CRM Dynamics - 删除实体时,关联的注释会自动删除吗?
- css - 线性渐变在 Firefox 85 中不起作用
- css - 如何对齐两个div的基线和边框
- python - Python/Selenium 通过 xpath 查找具有特定标签、类、firstchild 的元素
- bash - Bash - 如何重命名文件并将其保存在同一目录中