使用TextFSM解析F5 BigIP配置时如何实现单Key对应多值采集
问题原因说明
- 你定义的TextFSM变量默认是单值模式,新匹配到的值会覆盖旧值,所以最终只保留了最后一个匹配到的
tcpprofile - 原有模板的记录触发逻辑错误,每次匹配到profile就触发Record,导致生成多条独立记录,而非将多值汇总到同一条记录的数组字段中
修正后的TextFSM模板
Value Filldown virtualpart (\S+) Value Filldown virtual (\S+) Value List vprof ([a-zA-Z0-9_\-]+) Value List vprofpart (\S+) Start ^ltm\svirtual\s\/${virtualpart}\/${virtual}\s+{ -> Continue ^\s+profiles\s*{ -> Profiles ^} -> Record EOF Profiles ^\s+\/${vprofpart}\/${vprof}\s+{ -> Continue ^\s+} -> Start
模板逻辑说明
- 给
vprof、vprofpart变量新增List属性:所有匹配到的有效值会自动追加到数组中,不会出现新值覆盖旧值的问题 - 新增独立的Profiles状态:匹配到
profiles {行后切换到该状态,仅在该状态下匹配profile条目,避免误匹配rules、vlans等其他块下的配置 - 调整记录触发时机:匹配到整个virtual server的闭合
}时才触发Record,将当前虚拟服务器下收集到的所有profile值汇总为一条记录输出
输出结果验证
使用上述模板解析你提供的F5配置,即可直接得到你期望的字段格式:vprof和vprofpart均为包含所有关联profile信息的数组。
内容的提问来源于stack exchange,提问作者IPD86
相关产品推荐
相关产品推荐

