Python telnetlib读取直到缓冲区大小

Python telnetlib读取直到缓冲区大小,python,buffer,telnetlib,Python,Buffer,Telnetlib,背景: 我正在拉防火墙的连接表,以建立一个顶级说话者/听众列表 在某些情况下,连接表包含200000多个条目。我正在使用telnetlib远程访问防火墙并获取连接表。我使用read_直到捕获数据。但是,当表大于40000个条目时,它将挂起。当我杀死它时,我看到以下情况: Traceback (most recent call last): File "test2.py", line 152, in ? main() File "test2.py", line 120, in main tmp_t

背景: 我正在拉防火墙的连接表,以建立一个顶级说话者/听众列表

在某些情况下,连接表包含200000多个条目。我正在使用telnetlib远程访问防火墙并获取连接表。我使用read_直到捕获数据。但是,当表大于40000个条目时,它将挂起。当我杀死它时,我看到以下情况:

Traceback (most recent call last):
File "test2.py", line 152, in ?
main()
File "test2.py", line 120, in main
tmp_text = telnet.read_until(pager_text)
File "/usr/lib/python2.3/telnetlib.py", line 317, in read_until
self.process_rawq()
File "/usr/lib/python2.3/telnetlib.py", line 488, in process_rawq
self.cookedq = self.cookedq + buf[0]
KeyboardInterrupt
我是不是碰到了某种缓冲?获取这些数据的更好方法是什么


谢谢。

我上次使用telnetlib是很久以前的事了,但是。。。据我所知,使用
read_until
最适合于互动性更强、大数据转储次数更少的会话。这个想法是,您正在等待一个特定的模式响应,然后再次通信

您是否尝试过其他阅读选项,如
阅读一些
,并在本地建立您的回应?正如你所说,这肯定是一个缓冲的问题

您也可以尝试
read_,直到
并给它一个超时值,然后查看是否可以获取至少部分数据,然后再次读取


另外,我注意到您正在使用python2.3。如果您没有绑定到该版本,我在telnetlib的源代码中注意到,最近的更改特别改进了超时处理。

谢谢-我将使用read_some,看看是否有帮助。Python2.3.4是我们服务器上的标准,不幸的是,我无法升级。