У меня есть устройство, подключенное к сети, которое использует собственный .MIB-файл с различными «параметрами».Я могу использовать браузер MIB и найти OID для имени объекта, такого как 'powerSystemCompany'.
Но для написания моего кода мне нужна команда get, чтобы увидеть что-то похожее:
powerSystemCompany = CompanyName
Вместо:
SNMPv2-SMI::enterprises.12148.10.2.4 = CompanyName
Насколько я понимаю, мне нужно каким-то образом скомпилировать мой MIB-файл в формат pysnmp mib или JSON и использовать полученный OID для поиска параметра 'powerSystemCompany'.
Но я по-прежнему не могу использовать ни mibdump.py, ни pysnmi, чтобы получить .py или .json MIB.Когда я пытался использовать mibdump.py, я пытался выполнить следующее в моей подсказке Anaconda:
mibdump.py --mib-source='C:\\User\\$user$\\Documents\\pysnmp_Project\\mibs' --destination-format='json'
python mibdump.py --mib-source='C:\\User\\$user$\\Documents\\pysnmp_Project\\mibs' --destination-format='json'
Но первый просто открывает mibdump.py в моем редакторе VScode, а второй выдает ошибку:
'python" can't open file 'mibdump.py': [Errno 2] no such file or directory
Я также попробовал реализацию pysnmi, показанную ниже:
from pysmi.reader import FileReader
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 = 'SNMPv2-SMI'
srcDirectories = 'C://User//$user$//Documents//pysnmp_Project//mibs'
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])
# never recompile MIBs with MACROs
mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs))
# run recursive MIB compilation
results = mibCompiler.compile(*inputMibs)
print('\n# Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))
РЕДАКТИРОВАТЬ: Но, похоже, это застряло в файле mibCompiler.compile (* inputMibs).Использование примера кода с использованием HTTP-запроса заняло всего несколько секунд, в то время как я ждал несколько минут.
Целью этого является автоматизация моего лабораторного оборудования, использующего SNMP.
Iнадеюсь, я дал понять, иначе я бы хотел уточнить.