我将编译器配置在哪里查找asn1 MIB,如下所示:
compiler.addMibCompiler(mibBuilder, sources=['/usr/share/snmp/mibs'])
然后将getCmd()用作:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('private', mpModel=0),
UdpTransportTarget(('192.168.56.20', '161')),
ContextData(),
ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3))))
我在$HOME/.pysnmp/mibs
找到了VLAN-MIB.py,一切正常。
但我想将asn1 MIBs位置修改为我的本地文件夹。说:
/home/krish/mibs
我尝试了两种不同的方式:
此:
compiler.addMibCompiler(mibBuilder, sources=['/home/krish/mibs'])`
此:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('private', mpModel=0),
UdpTransportTarget(('192.168.56.20', '161')),
ContextData(),
ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addAsn1MibSource('/home/krish/mibs')))
)
无论哪种方式,我都会收到错误消息,指出无法找到VLAN-MIB。
但如果我自己离线编译它并将VLAN-MIB.py文件放在指定目录中:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('private', mpModel=0),
UdpTransportTarget(('192.168.56.20', '161')),
ContextData(),
ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addMibSource('/home/krish/mibs')))
)
它运作良好。
所以我的问题是在PySMI自动解析asn1 MIB之后放置编译的MIB(.py)?在上述情况下,我没有在默认位置$HOME/.pysnmp/mibs
找到它们。
如何告诉pysnmp / pysmi保留自动生成的.py文件的位置。
并且我不想在每次获取/设置调用中使用addMibSource()
。 addMibCompiler()
仅适用于/ usr / share / snmp / mibs,而不适用于用户目录。
想知道我在这里失踪了什么。感谢帮助。
答案 0 :(得分:0)
我的猜测是:
VLAN-MIB.py
VLAN-MIB
,而是VLAN-MIB
依赖的其他一些ASN.1 MIB pysnmp错误到底是什么意思?
由于您使用的是ASN.1 MIB,例如不是pysmi预编译的,您应该使用.addMibCompiler
或.addAsn1MibSource
来设置搜索路径。
尽管名称为.addMibCompiler
/ .addAsn1MibSource
,但添加路径但设置给定{{1}的新路径实例。因此,您应始终指定您的应用程序可能需要的所有MIB源,以及您引用的MIB所导入的MIB(并且递归地执行)。
您可以将MibBuilder
关键字参数传递给destination
/ .addMibCompiler
函数,以更改已编译的MIB位置。
说过我打算尝试:
.addAsn1MibSource
或
addMibCompiler(mibBuilder, sources=['/home/krish/mibs', '/usr/share/snmp/mibs'])
或者,如果您只想坚持ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addAsn1MibSource('/home/krish/mibs', '/usr/share/snmp/mibs')))
,请尝试将所有必需的MIB复制到该目录中。从pysnmp导入错误报告缺少依赖项。
最后,有大量各种MIB在线,你可以配置pysnmp自动下载和使用:
/home/krish/mibs