gpt4 book ai didi

python - "Snooping"python的telnetlib

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:26 27 4
gpt4 key购买 nike

我有一个调用 telnetlib.read_until() 的应用程序。在大多数情况下,它工作正常。但是,当我的应用程序的 telnet 连接失败时,很难调试确切的原因。是我的脚本还是服务器连接不可靠? (这是一个开发实验室,所以有很多不可靠的服务器)。

我想做的是能够在我的应用程序调用 telnetlib.read_until() 之前轻松监听放入熟队列的数据(从而希望避免影响我的应用程序的操作。)

翻看telnetlib.py,发现'buf[0]'正是我要的数据:新增的数据,没有因为监听'cookedq'导致的重复。我可以在 telnetlib.process_rawq() 结束之前插入一行,以打印出从服务器接收到的已处理数据。

telnetlib.process_rawq ...
...
self.cookedq = self.cookedq + buf[0]
print("Dbg: Cooked Queue contents = %r" % buf[0] <= my added debug line
self.sbdataq = self.sbdataq + buf[1]

这很好用。我可以看到几乎与我的应用程序接收到的数据完全一样的数据,而完全不影响其运行。

问题来了:有没有更时髦的方法来实现这一点?这种方法是基本的并且有效,但每次升级 Python 的库时我都必须记住重新进行此更改。

我尝试简单地扩展 telnet.process_rawq() 没有成功,因为 buf 是 telnet.process_rawq() 的内部

是否有一种(更像 pythonic 的)方法可以在不修改 telnetlib.py 的情况下窥探这个 telnetlib.process_rawq() 的内部值?

谢谢。

最佳答案

我刚刚找到了一个更好的解决方案(通过阅读代码,呃!)

telnetlib 已经内置了一个调试输出选项。只需调用 set_debuglevel(1),Bob 就是你的叔叔。

关于python - "Snooping"python的telnetlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com