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

如何在Python的SNMP Walk中输出变量名而非数值OID?

实现SNMP Walk输出变量名称而非数值OID

当然可以实现,只要在pysnmp中加载你的MIB文件,就能将数值OID解析为对应的变量名称。以下是修改后的代码及关键说明:

修改后的代码

from pysnmp.hlapi import SnmpEngine, CommunityData, UdpTransportTarget, ContextData, ObjectType, ObjectIdentity, nextCmd
from pysnmp.smi import builder, view, compiler

def walk_mib(ipaddress, oid, mib_dirs=None):
    # 初始化MIB构建器,用于加载自定义MIB文件
    mib_builder = builder.MibBuilder()
    
    # 添加自定义MIB文件所在目录(可传入多个目录)
    if mib_dirs:
        for dir_path in mib_dirs:
            mib_builder.addMibSources(builder.DirMibSource(dir_path))
    
    # 添加系统默认MIB路径(通常包含SNMPV2-SMI等基础MIB)
    mib_builder.addMibSources(builder.DirMibSource('/usr/share/snmp/mibs'))
    
    # 编译MIB文件,确保能被解析
    compiler.addMibCompiler(mib_builder)
    
    # 创建MIB视图控制器,用于OID与符号名称的映射
    mib_view = view.MibViewController(mib_builder)

    for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd(
        SnmpEngine(),
        CommunityData('public'),
        UdpTransportTarget((ipaddress, 161)),
        ContextData(),
        ObjectType(ObjectIdentity(oid)),
        lookupMib=True,  # 启用MIB符号解析
        mibViewController=mib_view  # 指定自定义MIB视图
    ):
        if not errorIndication and not errorStatus:
            for varBind in varBinds:
                # 获取MIB模块名和变量名称
                mib_module, var_name = varBind[0].getMibSymbol()
                value = varBind[1].prettyPrint()
                # 按期望格式输出
                print(f"{mib_module}::{var_name} = {value}")

# 调用示例:替换为你的设备IP、起始OID和MIB文件目录
walk_mib('<ip address>', '1.3.6.1.2.1', mib_dirs=['/path/to/your/mib/files'])

关键说明

  • 加载自定义MIB:通过MibBuilder添加你的MIB文件所在目录,确保pysnmp能找到并编译这些MIB。
  • 启用符号解析:nextCmd中设置lookupMib=True,让pysnmp自动将数值OID转换为对应的变量名称。
  • 符号名称获取:getMibSymbol()方法返回(MIB模块名,变量名称)的元组,直接拼接即可得到你想要的格式。

注意事项

  • 确保你的MIB文件是标准ASN.1格式,pysnmp支持编译解析。
  • 如果自定义MIB依赖其他基础MIB(如SNMPV2-SMI),需确保这些依赖MIB已存在于系统默认路径或你添加的目录中。
  • 检查脚本对MIB目录的读取权限,避免因权限不足导致加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:13:25