Python 如何逐行打印telnet响应?

Python 如何逐行打印telnet响应?,python,telnet,telnetlib,Python,Telnet,Telnetlib,当通过telnet执行的命令继续通过控制台响应时,是否可以逐行打印telnet响应 示例:我执行了一个命令(收集日志),它在控制台窗口上不断显示日志。我们能否逐行阅读并打印回复,而不遗漏任何一行 下面的代码段写入日志,但仅在特定的指定时间之后。如果在两者之间停止服务/脚本(CTRL-C),则不会写入任何内容 import sys import telnetlib import time orig_stdout = sys.stdout f = open('outpuy.txt', 'w')

当通过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'abcd\b\n',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()

您可以使用中指定的
ready\u very\u lazy
read\u eanger
read\u lazy
ready\u very\u lazy
函数逐字节读取流。然后,您可以在自己的代码上处理“直到”逻辑,同时将读取行写入控制台。

您可以在循环中使用
tn.read\u until(“\n”)
,以便在执行telnet命令时读取一行

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

您正在将输出定向到f,那么您认为如何将其打印到屏幕上?谢谢您,Sector。这正是我想要的。read_very_eager&read_eager都会打印telnet响应和“”,这是不需要的。如果没有可用的现成数据,两个都打印“”。read_lazy&read_very_lazy仅打印两张照片“”。