捕获telnet会话 - pexpect和telnetlib太慢了

时间:2012-04-03 19:07:27

标签: python pexpect telnetlib

我想从防火墙中提取连接表。在某些情况下,它可能超过200k行

“TCP在46.33.77.20:53415之外10.16.25.63:80,空闲0:00:04,字节3230,标志UIOB”

之类的。

我试图实现pexpect和telnetlib以获取这些表。不幸的是,超时和/或死亡都超过40k。

pexpect实施:

connect.send("sho conn\n")
connect.expect("<--- More --->", timeout=360)
tmp_txt = connect.before

telnetlib实现:

telnet.write("sho conn\n")
tmp_text = telnet.read_until("<--- More --->")

是否有更强大的方法来获取此信息?我使用寻呼机值控制一次给出的行数(在运行之前)。另外 - 我正在监视防火墙上的cpu,所以我知道它正在显示连接。对于pexpect或telnetlib来说,要么太多,要么太快,无法跟上。

感谢。

1 个答案:

答案 0 :(得分:0)

看起来你的方法对我来说很好。我还会将输出分页(保持防火墙CPU不足),然后一次将屏幕填满输出。

如果遇到超时错误,那么为什么不修改你的期望是一个期望每一行或特定输出行的循环(我认为它有一个常规格式)然后只有当它获得“更多”时才发送空间下一个屏幕的行。我已经使用这种模式来处理可能在不同位置暂停的长输出流。

你提到python进程已经死了,我们无法帮助你 - 除非你更详细地了解正在引发什么异常。