当通过 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()
最佳答案
您可以在循环中使用 tn.read_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
关于python - 如何逐行打印 telnet 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720821/