使用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
相关产品推荐
相关产品推荐

