Аналог python pxssh в robot, или автоматизация удаленного интерактива

python
Теги: #<Tag:0x00007fedc130dbd8>

#1

Суть теста:
1) подключиться по ssh к некоторому хосту
2) запустить на том хосте скрипт, который работает в режиме консольного диалога
3) автоматически дать ответы на вопросы скрипта
4) вернуть полученный конечный результат

Примером может служить запуск интерпретатора пайтон на удаленном хосте.

Или единственный возможный вариант - это написать свой скрипт с использованием pxssh и подключить к роботу как библиотеку?


(Dmitriy Zverev) #2

Здравствуйте.
Попробуйте для начала http://robotframework.org/SSHLibrary/latest/SSHLibrary.html


#3

А можно пример реализации такого интерактива? Я долго изучал эту библиотеку, но не смог реализовать.

Ага, Я понял! Я просто использовал старую версию! А здесь можно с Write и Read это всё реализовать. Большое спасиб!


(Dmitriy Zverev) #4

Да, например, так


SSHTest
    Open Connection    server    
    Login    mylogin    mypassword
    ${in1}=    Write    python
    Log to console    in1=${in1}
    Set Client Configuration    prompt=>>>
    ${out1}=    Read Until Prompt    
    Log to console    out1=${out1}
    ${in2}=    Write    print "Hello"
    Log to console    in2=${in2}
    ${out2}=    Read Until Prompt
    Log to console    out2=${out2}
    Close All Connections

Output:

in1= python

out1=Python 2.6.6 (r266:84292, May  1 2012, 13:52:17) 
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
in2= print "Hello"

out2=Hello
>>>

Разве что может быть неудобно попадание prompt в out


#5

Есть ещё одна интересная проблемка, промпты проходят, но, иногда не возвращает output.

*** Settings ***
Library    OperatingSystem
Library    SSHLibrary    timeout=5s

Test Teardown   Close All Connections

*** Test Cases ***
Verify SSH Prompts    Verify Prompts


*** Keywords ***

Verify Prompts
    Open Connection    ${HOST}
    Login    ${USERNAME}    ${PASSWORD}
    Write    python /home/${USERNAME}/work/python/robotframework/prompts.py
    ${output}=    Read
    Log To Console    ${output}
    Write    testuser
    ${output}=    Read
    Log To Console    ${output}
    Write    testpass
    ${output}=    Read
    Log To Console    ${output}

Тестируется вот такой простой скрипт:

username = raw_input('Enter username: ')
password = raw_input('Enter password: ')
print "I've got your credentials! Ha-hahaha!"

Иногда output есть, а иногда нет, с чем это может быть связано?


#6

Я понял! И это тоже понял! Иногда, задержки бывают, добавил delay=0.5s и проходит. Очевидно, что действительно хороший пример - Read Until Prompt