plink - получение непрерывного вывода

Я использую plink.exe в своем скрипте Python для отправки команд на маршрутизатор. Я возвращаю результат в «вывод». Одна команда запускает маршрутизатор для выполнения ряда команд. Есть ли способ непрерывно получать вывод, пока все команды не будут завершены. Я получаю только первые несколько строк обратно в вывод.

comm = "plink.exe -pw admin [email protected] COMMAND"
b = sub.Popen(comm,stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = b.communicate()

print output

Я надеюсь, что это имеет смысл для кого-то. знак равно


person Tobbe    schedule 13.02.2016    source источник


Ответы (1)


Я нашел решение своего вопроса. Модуль Paramiko работал у меня. знак равно

import sys
import time
import paramiko

host = '192.168.1.1'
user = 'admin'
pwd = 'admin'
i = 1

#def interactive_shell():
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

transport = paramiko.Transport((host,22))
transport.connect(username=user, password=pwd)
time.sleep(0.2)
#chan = paramiko.transport.open_session()
chan = transport.open_session()
chan.setblocking(0)
chan.invoke_shell()
chan.send("command") # Send command to device
chan.send("\n") # Send Enter
time.sleep(1)  #optional
while not chan.exit_status_ready():
    time.sleep(0.1)
    if chan.recv_ready() :
        output = chan.recv(8192)
        if len(output) > 0 :
           outputLines = output.splitlines(True)
           sys.stdout.write(output)

        if "unit" in output:
            sys.stdout.flush()
            break

    if chan.recv_stderr_ready() :
        mystderr = chan.recv_stderr(8192)
        if len(mystderr) > 0 :
            print mystderr, ","

transport.close()
person Tobbe    schedule 27.05.2016