我发现以下示例脚本将自定义MIB导入PySNMP:
import pysnmp
from pysmi.reader import FileReader, HttpReader
from pysmi.searcher import StubSearcher
from pysmi.writer import CallbackWriter
from pysmi.parser import SmiStarParser
from pysmi.codegen import JsonCodeGen
from pysmi.compiler import MibCompiler
# from pysmi import debug
# debug.setLogger(debug.Debug('reader', 'compiler'))
inputMibs = ['***.mib']
srcDirectories = ['C:/PROJECT/SNMPTest/Venv']
def printOut(mibName, jsonDoc, cbCtx):
print('\n\n# MIB module %s' % mibName)
print(jsonDoc)
# Initialize compiler infrastructure
mibCompiler = MibCompiler(
SmiStarParser(), JsonCodeGen(), CallbackWriter(printOut)
)
# search for source MIBs here
mibCompiler.addSources(*[FileReader(x) for x in srcDirectories])
print('Step0')
# never recompile MIBs with MACROs
mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs))
print('Step1')
# run recursive MIB compilation
results = mibCompiler.compile(*inputMibs)
print('\n# Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))
返回以下内容:
结果:SNMPv2-CONF:丢失,SNMPv2-SMI:丢失,SNMPv2-TC:丢失,MyMIB:失败
但是在我的**。mib文件中,找到了所有导入文件。为什么这不起作用的任何提示?
您应该在C:/PROJECT/SNMPTest/Venv
中拥有所有这些MIB文件,因为它们是整个编译过程成功所必需的依赖项。
我可以预料到的一个问题与Windows路径有关。因此,请尝试启用pysmi调试,以确保路径不会因某种原因而崩溃...