python - "Snooping"python的telnetlib

标签 python debugging telnetlib

我有一个调用 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/

相关文章:

php - PHP解析/语法错误;以及如何解决它们

python - 与路由器的连接打不开

python - 按天过滤 Pandas 数据框

python2.7 : Could not import get_url from bottle

Python ctypes 和可变性

debugging - 调试 : Couldn't match expected type ‘GHC.Types.Bool’ with actual type ‘Bool’

python - 在 shell 中将文件从 iso-8859-1 转换为 utf-8 iconv 与使用子进程从 python 调用它的结果不同

java - Eclipse:无法在 jar 文件类中查看静态方法的局部变量

python - 如何使用 python ssh 隧道连接到仅运行 telnet 的路由器?

python - 需要 python 3 中的 telnet 模块教程