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

使用Python正则表达式从SNMP Walk输出提取IP与子网掩码

从SNMP Walk输出中提取IP地址和子网掩码的正则方案

嘿,针对你要从SNMP Walk输出里提取IP地址和对应子网掩码的需求,我整理了一套直接能用的正则方案,帮你快速搞定!

先看你给出的输出结构,每一条<SNMPVariable>记录里都藏着两个关键信息:

  • oid字段末尾的目标IP地址(比如10.10.2.0)
  • value字段里的子网掩码(比如255.255.255.0)

实用正则表达式

我们可以用这个正则来精准匹配每一组对应的IP和子网掩码:

<SNMPVariable value='([\d.]+)' \(oid='iso\.3\.6\.1\.2\.1\.4\.21\.1\.11\.([\d.]+)',.*\)>

正则各部分解释

  • value='([\d.]+)':捕获value里的子网掩码,[\d.]+专门匹配由数字和点组成的IP格式字符串
  • oid='iso\.3\.6\.1\.2\.1\.4\.21\.1\.11\.([\d.]+)':捕获oid末尾的目标IP地址,这里固定匹配到iso.3.6.1.2.1.4.21.1.11.之后的部分,也就是我们要找的IP
  • 末尾的.*用来匹配记录中其他无关内容,确保能完整覆盖整条<SNMPVariable>记录

示例代码(Python)

如果用Python来实现提取,代码可以这么写:

import re

# 你的SNMP Walk输出内容
snmp_output = """[<SNMPVariable value='255.255.255.0' (oid='iso.3.6.1.2.1.4.21.1.11.10.10.2.0', oid_index='', snmp_type='IPADDR')>, <SNMPVariable value='255.255.255.192' (oid='iso.3.6.1.2.1.4.21.1.11.10.0.0.0', oid_index='', snmp_type='IPADDR')>, <SNMPVariable value='255.255.255.0' (oid='iso.3.6.1.2.1.4.21.1.11.10.10.10.0', oid_index='', snmp_type='IPADDR')>]"""

# 定义正则模式
pattern = r"<SNMPVariable value='([\d.]+)' \(oid='iso\.3\.6\.1\.2\.1\.4\.21\.1\.11\.([\d.]+)',.*\)>"
# 批量匹配所有结果
matches = re.findall(pattern, snmp_output)

# 遍历输出提取到的信息
for subnet_mask, ip_addr in matches:
    print(f"IP地址: {ip_addr}, 子网掩码: {subnet_mask}")

运行结果

执行上面的代码后,会得到清晰的对应关系:

IP地址: 10.10.2.0, 子网掩码: 255.255.255.0
IP地址: 10.0.0.0, 子网掩码: 255.255.255.192
IP地址: 10.10.10.0, 子网掩码: 255.255.255.0

如果你的SNMP输出有格式变种(比如oid前缀不同),只需要调整正则里的oid固定匹配部分就可以适配啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:50:46