Как печатать ответ telnet строка за строкой?

можно ли печатать ответ telnet строка за строкой, когда команда, выполняемая через telnet, продолжает отвечать через консоль ?

пример: я выполнил команду (для сбора журналов), она продолжает отображать журналы в окне консоли. Можем ли мы прочитать ответ по строкам и распечатать его, не пропуская ни одной строки ?

ниже фрагмент записывает журнал, но только после определенного заданного времени. Если я остановлю службу / скрипт (CTRL-C) между ними, это не напишет что угодно.

import sys
import telnetlib
import time


orig_stdout = sys.stdout
f = open('outpuy.txt', 'w')
sys.stdout = f

try:
        tn = telnetlib.Telnet(IP)
        tn.read_until(b"pattern1")
        tn.write(username.encode('ascii') + b"n")
        tn.read_until(b"pattern2")
        tn.write(command1.encode('ascii') + b"n")
        z = tn.read_until(b'abcdbn',600)
        array = z.splitlines( )
except:
        sys.exit("Telnet Failed to ", IP)

for i in array:
        i=i.strip()
        print(i)

sys.stdout = orig_stdout
f.close()

2 ответов


можно использовать tn.read_until("\n") в цикле, чтобы прочитать одну строку durint выполнение вашей команды telnet

while True:
    line = tn.read_until("\n")  # Read one line
    print(line)
    if 'abcd' in line:  # last line, no more read
        break

можно использовать ready_very_eager, read_eager, read_lazy и ready_very_lazy функции, указанные в документация читать ваши побайтовое поток. Затем вы можете обрабатывать логику "до" в своем собственном коде и одновременно записывать строки чтения на консоль.