python - 如何逐行打印 telnet 响应?

标签 python telnet telnetlib

当通过 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/

相关文章:

ubuntu - 如何通过 telnet 以编程方式添加 cron 作业?

ssl - 如何避免 libmproxy 中的 'tlsv1 alert unknown ca' 错误?

Python Telnet 端口 23 与 223 具有不同的结果

sockets - 带有选项卡的 Golang telnet 自动完成命令

Python TCP 服务器

python telnetlib 预期错误 : TypeError: can't use a string pattern on a bytes-like object

python - 我无法导入模块,我不知道为什么 Python : ImportError: Cannot import name X

python - 3D 语义分割任务的 Keras 预处理

python - 根据行的先前值填充 NaN

Python 从文本文件中切片和分割数据