【问题标题】:Robotframework and SSHLibrary issue with a network router网络路由器的 Robotframework 和 SSHLibrary 问题
【发布时间】:2018-08-12 13:19:56
【问题描述】:

我现在正在尝试使用 SSHLibrary 将 ssh 连接到在我的 PC 上运行的虚拟路由器并在路由器上执行简单的 ping 测试,然后显示测试用例的结果。 我可以登录到路由器并在机器人框架之外执行命令,但是当我尝试使用机器人框架执行此操作时,我收到一条错误消息失败,不知道如何解决此错误消息:

这是我的机器人框架测试脚本:

*** Settings ***
Library     SSHLibrary
Suite Setup Open Connection And Log In
Suite Teardown  Close All Connections

*** Variable ***
${HOST}     172.31.1.250
${USERNAME} admin
${PASSWORD} admin

*** Keywords ***
Open Connection And Log In
    Open Connection     ${HOST}
    Login           ${USERNAME}     ${PASSWORD}

*** Test Cases ***
Ping test
    ${output} = Execute Command     ping 1.1.1.1
    Should Contain  ${result.stdout}    64 bytes from 1.1.1.1

这是我执行上述测试用例时得到的输出:

==============================================================================
Sros                                                                          
==============================================================================
Ping test                                                             | FAIL |
ChannelException: (1, 'Administratively prohibited')
------------------------------------------------------------------------------
Sros                                                                  | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================

这是什么错误信息,我该如何解决:

**ChannelException: (1, 'Administratively prohibited')**

我登录的路由器的类型有关系吗?

感谢您的帮助。

根据反馈,我已将执行命令更改为写入。 所以我的脚本现在看起来像这样:

*** Settings ***
Library     SSHLibrary
Suite Setup Open Connection And Log In
Suite Teardown  Close All Connections

*** Variable ***
${HOST}     172.31.1.250
${USERNAME} admin
${PASSWORD} admin

*** Keywords ***
Open Connection And Log In
    Open Connection     ${HOST}
    Login           ${USERNAME}     ${PASSWORD}

*** Test Cases ***
Ping test
    ${result} = Write       ping 1.1.1.1 count 1
    Should Contain  ${result.stdout}    64 bytes from 1.1.1.1

但现在我收到以下错误消息:

==============================================================================
Sros                                                                          
==============================================================================
Ping test                                                             | FAIL |
Resolving variable '${result.stdout}' failed: AttributeError: 'str' object has no attribute 'stdout'
------------------------------------------------------------------------------
Sros                                                                  | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================

我也没有使用 Wireshark 检查机器人脚本确实 ssh 进入路由器并建立 ssh 会话。我认为工作正常的连接部分。

【问题讨论】:

  • 我认为这与关键字Execute Command 启动新外壳的事实有关。尝试使用关键字Write
  • 嗨,这有助于摆脱上述错误。但现在得到不同的错误。有关新错误,请参阅我编辑的帖子。
  • 嗨,这是因为Write 没有返回任何内容。您需要自己阅读输出。很少有关键字可以这样做robotframework.org/SSHLibrary/SSHLibrary.html#Read

标签: robotframework


【解决方案1】:

考虑使用

Write  ping 1.1.1.1
${output}=  Read  delay=0.5s 

在 var 中获取输出。它现在将具有与手动执行相同的行为!

希望对你有帮助;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多