0

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

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

之类的。

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

期望实现:

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 跟不上。

谢谢。

4

1 回答 1

0

看起来你的方法对我来说很好。我还将分页输出(以保持防火墙 CPU 较低),然后一次将输出捕获一个完整的屏幕。

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

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

于 2012-09-20T13:18:47.040 回答