Python TextFSM解析ISIS数据库时IP Metric漏抓问题排查求助
问题根因
- 跳转逻辑错误:你在
Metrics状态匹配到IP类型的Metric后直接执行-> Record Start,会在匹配到第一条IP Metric时立刻触发当前记录存储、并跳回Start状态解析下一个LSP,导致当前LSP剩余的IP Metric直接被跳过。 - 无IP Metric的LSP存在记录风险:类似ROUTER_K这类没有IP段Metric的LSP,因为永远不会走到你预设的
-> Record触发点,只能靠下一个LSP的匹配隐式触发记录,容易出现字段丢失问题。 - 正则冗余:
OVERLOAD_BIT的正则规则[0,1]多写了多余的逗号,会把逗号也纳入可匹配字符范围,虽然当前样本没触发问题,但存在隐患。
修复后的TextFSM模板
Value Required LSPID (.*\.\d+\-00) Value OVERLOAD_BIT ([01]) Value HOSTNAME (.*) Value IPADD (\d+\.\d+\.\d+\.\d+) Value List CONNECTED_METRIC (\d+) Value List LSPID_PEER (.*) Value List SUBNET_METRIC (\d+) Value List SUBNET (\d+\.\d+\.\d+\.\d+\/\d+) Start # 匹配到新LSP起始行时,先记录上一个LSP的解析结果,再处理当前行 ^${LSPID}.*[01]/[01]/${OVERLOAD_BIT} -> Record Start ^\s+Hostname:\s+${HOSTNAME} ^\s+IP\s+Address:\s+${IPADD} -> Metrics Metrics # 匹配IS扩展类型Metric,匹配后留在Metrics状态继续解析后续内容 ^\s+Metric:\s+${CONNECTED_METRIC}\s+IS-Extended\s+${LSPID_PEER} # 匹配IP类型Metric,匹配后留在Metrics状态继续解析后续内容 ^\s+Metric:\s+${SUBNET_METRIC}\s+IP\s+${SUBNET} # 匹配到新LSP起始行,说明当前LSP解析完成,跳回Start触发记录 ^${LSPID}.*[01]/[01]/${OVERLOAD_BIT} -> Start # 忽略当前LSP中不需要解析的其他字段 ^\s+.* -> Continue
验证说明
修改后解析时会遍历当前LSP的所有Metric字段后再触发记录,所有IP类型的Metric都会被正常捕获,没有IP Metric的LSP也能正常生成完整记录。
内容的提问来源于stack exchange,提问作者finopat
相关产品推荐
相关产品推荐

