【发布时间】:2012-09-20 21:18:47
【问题描述】:
我想从防火墙中提取连接表。在某些情况下,它可能超过 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 跟不上。
谢谢。
【问题讨论】:
-
@tMC - 不幸的是,它必须是 telnet,而不是 SSH。
-
听起来这个防火墙是一个设备,而不是运行 Linux 的标准 PC。这是什么机器?
-
您是否 100% 确定防火墙实际上正在传送所有数据?也许它的缓冲区溢出了,你永远不会得到更多提示。我会尝试设置寻呼机限制,直到它确实起作用,然后教你的脚本按空格键查看下一页。
-
@NickCraig-Wood - 是的,如果我手动登录设备,将寻呼机设置为 0 并显示表格,它就会全部吐出。我考虑过使用空间方法 - 但无论出于何种原因,防火墙在这样做时会占用更大的 CPU。
-
@tMC - 这是 Cisco ASA(55xx 系列)。我之前希望通过 snmp 获取连接表 - 但可以找到一种方法来获取它。