You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TextFSM解析设备层级PCC过滤数据遇到困难,寻求正确解析方案

如何用TextFSM正确解析带层级关联的设备配置数据?

我在用TextFSM解析某设备的层级式配置数据时卡壳了——数据是按pcc-filter-base-name分组的,每个分组下面包含多个filter条目,每个filter都有自己的属性集合。我希望最终能把每个filter和它所属的filter-base关联起来,形成结构化的解析结果,但目前的尝试完全达不到预期。

待解析的原始数据

pcc-filter-base-name : P2P-BASE
filter = 1337x
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
l7-uri = 1337x:
precedence = 1
protocol-id = 0
filter = abc
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
l7-uri = abc:
precedence = 2
protocol-id = 0
filter = adc
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
l7-uri = adc:
precedence = 3
protocol-id = 0
pcc-filter-base-name : FACEBOOK_FLEX-BASE
filter = IP_NET_1
destination-address = 157.240.24.32/29
destination-port-list = 80,443
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
precedence = 1
protocol-id = 0
filter = IP_NET_2
destination-address = 157.240.25.32/29
destination-port-list = 80,443
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
precedence = 2
protocol-id = 0
filter = IP_NET_3
destination-address = 157.240.26.32/29
destination-port-list = 80,443
filter-state = enabled
flow-inactivity-time = 0
flow-initiation = uplink
precedence = 3
protocol-id = 0

我尝试的TextFSM模板

Value Filldown filter_base_name (\S+)
Value Required filter (\S+)
Value filter_state (\S+)
Value flow_inactivity_time (\S+)
Value flow_initiation (\S+)
Value l7_uri (\S+)
Value Required precedence (\S+)
Value protocol_id (\S+)
Value destination_address (\S+)
Value destination_port_list (\S+)

Start
^pcc-filter-base-name : ${filter_base_name} -> Filter

Filter
^filter = ${filter}
^filter-state = ${filter_state}
^flow-inactivity-time = ${flow_inactivity_time}
^flow-initiation = ${flow_initiation}
^l7-uri = ${l7_uri}
^precedence = ${precedence}
^protocol-id = ${protocol_id}
^destination-address = ${destination_address}
^destination-port-list = ${destination_port_list}
^pcc-filter-base-name : ${filter_base_name} -> Record Start

遇到的问题

解析结果和预期相差甚远,我想要的是每个filter条目都带上它所属的filter_base_name,比如1337x这条filter要关联到P2P-BASE,IP_NET_1关联到FACEBOOK_FLEX-BASE。但现在的模板要么漏数据,要么关联错误。我已经调整过好几次状态跳转和字段定义,都没解决问题,甚至有点怀疑TextFSM是不是适合处理这种层级关联的场景?

恳请各位大佬帮忙看看问题出在哪,或者有没有更合适的处理方式?

内容的提问来源于stack exchange,提问作者redcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:27:32