Python 如何逐行打印telnet响应?
当通过telnet执行的命令继续通过控制台响应时,是否可以逐行打印telnet响应 示例:我执行了一个命令(收集日志),它在控制台窗口上不断显示日志。我们能否逐行阅读并打印回复,而不遗漏任何一行 下面的代码段写入日志,但仅在特定的指定时间之后。如果在两者之间停止服务/脚本(CTRL-C),则不会写入任何内容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')
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仅打印两张照片“”。