如何加载自定义MIB

2024-06-09 01:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用PySNMP库创建一个陷阱侦听器,该侦听器应该加载一个自定义MIB文件(已经为PySNMP编译过,以便与一起使用)MIB转储.py),并以字段名=值的可读格式打印接收到的陷阱。你知道吗

但是,代码无法找到MIB文件并返回错误:

pysnmp.smi.error.MibNotFoundError: MIB file "BMC-CONTROLMEM-MIB.py[co]" not found in search path (DirMibSource('/home/ign
asi/Workspace/trap-endpoint/.venv/lib/python3.7/site-packages/pysnmp/smi/mibs'), 
DirMibSource('/home/ignasi/Workspace/trap-endpoint/.venv/lib/python3.7/site-packages/pysnmp/smi/mibs/instances'),
DirMibSource('/home/ignasi/Workspace/trap-endpo
int/.venv/lib/python3.7/site-packages/pysnmp_mibs'),
DirMibSource('/home/ignasi/.pysnmp/mibs'), 
DirMibSource('python_packaged_mibs'), 
DirMibSource('/home/ignasi/.pysnmp/mibs')) 

我从以下示例(this)开始,但是当我指向我的MIB时:

for (errorIndication,
        errorStatus,
        errorIndex,
        varBinds) in bulkCmd(SnmpEngine(),
                            UsmUserData('usr-none-none'),
                            UdpTransportTarget(('localhost', 5000)),
                            ContextData(),
                            0, 50,
                            ObjectType(
                                ObjectIdentity('BMC-CONTROLMEM-MIB', 'controlmAlert').addMibSource('/home/ignasi/.pysnmp/mibs').addMibSource('python_packaged_mibs')
                            ),
                            lexicographicMode=False):

它返回那个错误。你知道吗

我尝试列出所有路径,如here所述,并将MIB复制到所有文件夹,但没有成功。你知道吗

我也读过this的文章,不知道如何在/instances文件夹中生成前缀为“uuuuu”的MIB。你知道吗

最后,我不明白为什么要搜索一个.py[co]文件,是不是也必须编译?你知道吗

...modName and modName + "***.py[co]***", ', '.join([str(x) for x in self.__mibSources]))
pysnmp.smi.error.MibNotFoundError: MIB file "BMC-CONTROLMEM-MIB.***py[co]***"

我错过什么了吗?你知道吗

谢谢。你知道吗


Tags: 文件inpyhomeworkspacesmimibco
1条回答
网友
1楼 · 发布于 2024-06-09 01:19:55

您不需要显式地编译mib—这将在幕后发生。你知道吗

如果您正在构建一个陷阱侦听器(通知接收器),那么您将获得它接收到的变量绑定。我猜在这一点上,您应该遍历它们并针对MIB进行解析,如this

varBinds = [ObjectType(ObjectIdentity(*varBind).resolveWithMib(mibViewController)
            for varBind in varBinds]

在解析varBinds之前,您可能需要pre-load the MIBs您想要接收的oid。在此之前,您可能希望point pysnmp到一个包含所有这些mib及其依赖项的位置。你知道吗

相关问题 更多 >