【问题标题】:Robot get output of Telnet.Execute Command inside a SSH connection机器人在 SSH 连接中获取 Telnet.Execute 命令的输出
【发布时间】:2019-09-27 10:06:53
【问题描述】:

我正在尝试获取Telnet.Execute Command 的输出,我的 telnet 连接在 SSH 连接内。

如果我尝试${saida}= SSHLibrary.Execute Command ls,我可以获得ls 命令的输出,但如果我尝试${saida}= SSHLibrary.Execute Command Telnet.Execute Command dir,我期待dir [在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}

【问题讨论】:

  • 我不确定我是否理解你的意图,你能详细说明你想要完成什么吗?您想将Telnet.Open Connection 的输出作为Execute Command 的参数吗?或者你想在 ssh 会话中运行 telnet?
  • @TodorMinakov 我实现了在 ssh 连接中使用 telnet,但我想使用 Telnet 库
  • 是的,我想打开一个 telnet 连接并使用 ssh 和 telnet 的机器人库在 SSH 连接中获得反馈。 telnet 连接有效,但我没有从 Execute Command 得到反馈

标签: python ssh robotframework telnet


【解决方案1】:

来自cmets:

我实现了在 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

【讨论】:

  • 谢谢@TodorMinakov。事实上,如果我在SSHLibrary.Execute Command Telnet.Login ${OTHER-USERNAME} ${OTHER-PASSWORD} password_prompt=password 中更改密码,则连接已实现,我会收到登录错误。但按照你所说的,这是一个意想不到的行为。我会选择你的答案。
猜你喜欢
  • 1970-01-01
  • 2014-03-29
  • 2023-03-12
  • 2016-03-09
  • 1970-01-01
  • 2012-06-29
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多