首页 > 解决方案 > 机器人在 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}

标签: pythonsshrobotframeworktelnet

解决方案


从评论:

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


推荐阅读