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

TextFSM解析问题:如何捕获所有SNMP主机配置信息?

问题:TextFSM解析SNMP主机配置时遗漏部分主机

使用TextFSM解析SNMP服务器主机配置时,现有模板仅能捕获包含traps、use-vrf、source-interface完整配置项的主机(如10.132.300.101、10.105.10.104),无法捕获仅含部分配置项的主机(如10.140.300.200、10.151.230.230)。

待解析配置

snmp-server host 10.140.300.200 traps version 2c ldldo-1ldd
snmp-server host 10.140.300.200 use-vrf management
snmp-server host 10.132.300.101 traps version 2c oelee-doeoel
snmp-server host 10.132.300.101 use-vrf management
snmp-server host 10.132.300.101 source-interface kedl1
snmp-server host 10.151.230.230 traps version 2c SNMP1sAPain
snmp-server host 10.105.10.104 traps version 2c oelee-doeoel
snmp-server host 10.105.10.104 use-vrf management
snmp-server host 10.105.10.104 source-interface kedl1

当前使用的TextFSM模板

Value host (\S+)
Value version (\S+)
Value community (\S+)
Value vrf (\S+)
Value source_interface (\S+)

Start
  ^snmp-server\s+host\s+${host}\s+traps\s+version\s+${version}\s+${community}
  ^snmp-server\s+host\s+${host}\s+use-vrf\s+${vrf}
  ^snmp-server\s+host\s+${host}\s+source-interface\s+${source_interface} -> Record

当前输出结果

[{'host': '10.132.300.101',
  'version': '2c',
  'community': 'oelee-doeoel',
  'vrf': 'management',
  'source_interface': 'kedl1'},
 {'host': '10.105.10.104',
  'version': '2c',
  'community': 'oelee-doeoel',
  'vrf': 'management',
  'source_interface': 'kedl1'}
]

问题原因

当前模板仅在匹配到source-interface行时触发Record动作,导致缺少该行的主机无法被记录;同时未针对同一主机的多配置项做状态管理,无法完整收集零散配置信息。

修正后的TextFSM模板

Value host (\S+)
Value version (\S+)
Value community (\S+)
Value vrf (\S+)
Value source_interface (\S+)

Start
  # 匹配traps行初始化主机信息,进入专属处理状态
  ^snmp-server\s+host\s+${host}\s+traps\s+version\s+${version}\s+${community} -> HostSection

HostSection
  # 收集当前主机的use-vrf配置
  ^snmp-server\s+host\s+${host}\s+use-vrf\s+${vrf}
  # 收集当前主机的source-interface配置
  ^snmp-server\s+host\s+${host}\s+source-interface\s+${source_interface}
  # 遇到新主机时,先记录当前主机再处理新主机
  ^snmp-server\s+host\s+(\S+) -> Record, Start
  # 配置结束时记录最后一个主机
  ^$ -> Record

修正后的输出结果

[{'host': '10.140.300.200',
  'version': '2c',
  'community': 'ldldo-1ldd',
  'vrf': 'management',
  'source_interface': None},
 {'host': '10.132.300.101',
  'version': '2c',
  'community': 'oelee-doeoel',
  'vrf': 'management',
  'source_interface': 'kedl1'},
 {'host': '10.151.230.230',
  'version': '2c',
  'community': 'SNMP1sAPain',
  'vrf': None,
  'source_interface': None},
 {'host': '10.105.10.104',
  'version': '2c',
  'community': 'oelee-doeoel',
  'vrf': 'management',
  'source_interface': 'kedl1'}
]

关键修改说明

  • 新增HostSection状态,将同一主机的所有配置项归为一组处理,避免分散匹配导致的信息丢失。
  • 调整Record触发时机:遇到新主机行时先记录当前主机,配置结束时记录最后一个主机,确保所有主机都被捕获。
  • 所有字段保持可选,缺少的配置项以None值呈现,不影响整体记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:47:41