Как сделать кастом MIB PYSNMP
Я новичок в SNMP, но я собираюсь сделать несколько простых приложений мониторинга с использованием SNMP и PYSNMP
Я хочу контролировать моего агента с помощью своего пользовательского MIB (потому что, когда я запускаю какой-то MIB, он не может работать с PYSNMP), я прочитал документацию по PYSNMP, но, похоже, мне это не поможет,
Можете ли вы показать мне, как легко сделать пользовательский MIB PYSNMP? так что я могу использовать его как на стороне менеджера, так и на стороне агента:)
Спасибо
спасибо за ваш ответ, я уже прочитал эти статьи, но моя миба все еще не может поразить цель,
Я хочу прочитать мой Total Disk на моем разделе, так вот мой MIB CODE:
DISKTOTAL-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE, Integer32, NOTIFICATION-TYPE
FROM SNMPv2-SMI
;
internet OBJECT IDENTIFIER ::= { iso(1) org(3) dod(6) 1 }
enterprises OBJECT IDENTIFIER ::= { internet private(4) 1 }
ucdavis OBJECT IDENTIFIER ::= { enterprises 2021 }
diskcheck OBJECT IDENTIFIER ::= { ucdavis 9 }
snmpdiskcheck OBJECT IDENTIFIER ::= { diskcheck 1 }
totaldisk OBJECT IDENTIFIER ::= { snmpdiskcheck 6 }
diskTotal OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Total size of disk on partition."
::= { totaldisk 1 }
END
после генерации этого кода вот мой MIB в py
# PySNMP SMI module. Autogenerated from smidump -f python DISKTOTAL-MIB
# by libsmi2pysnmp-0.1.3 at Wed Jul 3 01:30:48 2013,
# Python version sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)
# Imports
( Integer, ObjectIdentifier, OctetString, ) = mibBuilder.importSymbols("ASN1", "Integer", "ObjectIdentifier", "OctetString")
( NamedValues, ) = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues")
( ConstraintsIntersection, ConstraintsUnion, SingleValueConstraint, ValueRangeConstraint, ValueSizeConstraint, ) = mibBuilder.importSymbols("ASN1-REFINEMENT", "ConstraintsIntersection", "ConstraintsUnion", "SingleValueConstraint", "ValueRangeConstraint", "ValueSizeConstraint")
( Bits, Integer32, Integer32, MibIdentifier, NotificationType, MibScalar, MibTable, MibTableRow, MibTableColumn, TimeTicks, ) = mibBuilder.importSymbols("SNMPv2-SMI", "Bits", "Integer32", "Integer32", "MibIdentifier", "NotificationType", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "TimeTicks")
# Objects
internet = MibIdentifier((1, 3, 6, 1))
enterprises = MibIdentifier((1, 3, 6, 1, 4, 1))
ucdavis = MibIdentifier((1, 3, 6, 1, 4, 1, 2021))
diskcheck = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9))
snmpdiskcheck = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9, 1))
totaldisk = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9, 1, 6))
diskTotal = MibScalar((1, 3, 6, 1, 4, 1, 2021, 9, 1, 6, 1), Integer32()).setMaxAccess("readonly")
if mibBuilder.loadTexts: diskTotal.setDescription("Total size of disk on partition.")
# Augmentions
# Exports
# Objects
mibBuilder.exportSymbols("DISKTOTAL-MIB", internet=internet, enterprises=enterprises, ucdavis=ucdavis, diskcheck=diskcheck, snmpdiskcheck=snmpdiskcheck, totaldisk=totaldisk, diskTotal=diskTotal)
Но когда я попытался вызвать snmpget: snmpget -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.6.1
Я нашел:
iso.3.6.1.4.1.2021.9.1.6.1 = No Such Instance currently exists at this OID
благодарю вас
1 ответ
С PySNMP у вас есть текстовый файл MIB, преобразованный в код Python, который обслуживает как сторону менеджера, так и агента вашего приложения SNMP. Преобразование выполняется с помощью инструментов smidump & libsmi2pysnmp:
$ cat YOUR-MIB.txt | smidump -f python | libsmi2pysnmp > YOUR-MIB.py
Посмотрите дистрибутив PySNMP для небольшого скрипта автоматизации (tools / build-pysnmp-mib).
Когда у вас есть Pythonized MIB, сторона менеджера может использовать его для целей визуализации (представлять OID в словах, предварительно кодировать значения). Агентское приложение может расширять Pythonized MIB, добавляя конечные объекты, которые имеют доступ к значениям в хост-системе, которой вы хотите управлять.
Вот аналогичный вопрос о реализации на стороне агента и сообщение в блоге о процессе преобразования PySNMP MIB
Вам действительно нужно внедрять приложения "Менеджер" и "Агент"?