5-3 (课外)本章补充资料
安装MG-soft MibBrowser
安装MibBrowser 软件来自mg-soft
⏬下载地址: 安装包mgMibBrowser-2024a普通版.zip
解压缩后从x64.exe开始安装。
向导中问license许可证位置选择否。
本地用户名信息随便填写。
安装完成后桌面生成文件夹,里面众多快捷方式入口是MibBroser。




连接 快速连接,输入服务器地址。点击地址栏后的小按钮,或点击菜单栏/View/SNMP Protocol Preference,进入到协议设置对话框(少截一张图)。 选择协议v2c,弹窗让激活选try 30 day free或continue ,如果无法选中v2c协议则试用已过期,只能放弃。
输入团体名、密码等信息。 关掉协议设置对话框。点击连接。


记录OID 连接成功后看到设备的mib信息树,可以展开查看个项目OID和具体值。

其它获取OID方式
其它获取OID的途径。如果不用Mib查看软件,也可以直接从设备厂商的文档中搜索
华为官网文档-S300, S500, S1700, S2700, S5700, S6700 V200R021C00, C01 MIB参考
或从网络博文查找。
接口别名:1.3.6.1.2.1.31.1.1.1.18
接口当前操作状态:1.3.6.1.2.1.2.2.1.8
接口当前操作状态:1.3.6.1.2.1.2.2.1.7
接口发送错报数:1.3.6.1.2.1.2.2.1.14
接口发送字节数:1.3.6.1.2.1.31.1.1.1.10
接口接收错报数:1.3.6.1.2.1.2.2.1.20
接口收到的字节数:1.3.6.1.2.1.31.1.1.1.6
网络接口数目:1.3.6.1.2.1.2.1.0
网络接口信息描述:1.3.6.1.2.1.2.2.1.2
系统基本信息:1.3.6.1.2.1.1.1.0
获取独特oid设备型号查库确定型号类型:1.3.6.1.2.1.1.2
读取设备名称:1.3.6.1.2.1.1.5
读取接口带宽:1.3.6.1.2.1.31.1.1.1.15
设备运行时间:1.3.6.1.6.3.10.2.1.3.0 单位为S
pysnmp库
pysnmp(课本上)库经测试库版本和代码已经大幅度变化,代码方法名变化、包路径变化和开始异步写法。代码对应的是4.x版本,现在已经是8.x版本,后面的都是async的。
# 在pysnmp 4.x和8.x版本上未成功,看源代码新版本已经删除了同步写法必须用异步?
from pysnmp.hlapi import * # This line is okay, but it's better to import individually
from pysnmp.hlapi import getCmd, SnmpEngine, UsmUserData, UdpTransportTarget, ContextData, ObjectType, ObjectIdentity
from pysnmp.smi import builder, view # Import for MIB access if needed
# Import necessary constants explicitly:
from pysnmp.hlapi import usmHMACMD5AuthProtocol, usmAesCfb128Protocol
# SNMP目标设备信息
ip = '192.168.56.100' # 路由器IP地址
port = 161 # SNMP端口号
# SNMP v3 用户信息
username = 'R1' # 用户名
auth_protocol = usmHMACMD5AuthProtocol # 认证协议
auth_key = 'Huawei12#$' # 认证密码
priv_protocol = usmAesCfb128Protocol # 加密协议
priv_key = 'Huawei12#$' # 加密密码
# 创建SNMP引擎
snmp_engine = SnmpEngine()
# 创建USM用户
usm_user = UsmUserData(username,
authKey=auth_key,
privKey=priv_key,
authProtocol=auth_protocol,
privProtocol=priv_protocol)
# 创建传输目标
transport_target = UdpTransportTarget((ip, port))
# 创建上下文数据
context_data = ContextData()
# 定义要获取的MIB对象
oid = ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)) # 例如,获取系统描述
# 发送SNMP请求
g = getCmd(snmp_engine,
usm_user,
transport_target,
context_data,
oid)
# 处理SNMP响应
errorIndication, errorStatus, errorIndex, varBinds = next(g)
if errorIndication:
print(f'Error: {errorIndication}')
elif errorStatus:
print(f'Error: {errorStatus.prettyPrint()}')
else:
for varBind in varBinds:
print(f'{varBind[0]} = {varBind[1]}')
# 关闭SNMP引擎
snmp_engine.closeCmdGen()
SNMP协议的没落
在寻找客户端时,笔者发现开源客户端大多在2010年之前,仅有的两家还在更新的公司也都软件收费且没有人盗版。
SNMP协议比较复杂,不同的MIB模型,OID的数字无法记忆。
后续出现的NETCONF、Telemetry、RESTCONF提供了更便捷的体验。
25 三月 2025