Проблемы со сбором MIB с помощью PySNMP

Я новичок в протоколе SNMP и только недавно познакомился с ним на курсе компьютерных сетей.

Я понимаю, как менеджер отправляет Gets, Sets, GetNext, GetBulk и все такое, он будет ловить Traps и тому подобное. Одна вещь, которую я не совсем понимаю, это MIB

Из того, что я понял, MIB хранится на агенте, и Менеджер будет запрашивать дерево MIB. Это нормально, хотя диспетчеру требуется OID, чтобы иметь возможность правильно запрашивать. Один вопрос, который у меня есть, касается того, жестко ли они закодированы или нет. OID жестко запрограммированы в менеджере или нет?

Кроме этого, я не уверен, как создать файл MIB, по-видимому, есть какой-то особый тип файла, который определяет структуру MIB, и я действительно не понимаю, как использовать pySNMP для его создания. Мне кажется, я бы запускал это на стороне агента при запуске

Может ли кто-нибудь помочь мне прояснить эти концептуальные вопросы?


person Funkyguy    schedule 22.11.2014    source источник


Ответы (1)


Менеджер должен знать переменные, чтобы запросить что-то конкретное. Переменные можно идентифицировать по идентификаторам OID или именам объектов MIB.

Базы MIB предоставляют Менеджеру такую ​​информацию, как:

  • Дружественные человеку символические имена, связанные с OID
  • Типы значений, связанных с определенными OID
  • Подсказки по разрешениям на доступ к переменным, которые реализуются агентом
  • Структура и типы индексов таблиц SNMP
  • Ссылки на другие объекты MIB (например, уведомления)

Если MIB доступна, Менеджер сможет выполнить любую операцию SNMP, зная либо символическое имя, либо OID интересующей его переменной агента. Все необходимые сведения будут получены из MIB.

Если MIB недоступен, Менеджер все равно должен будет выяснить больше или меньше дополнительных деталей (некоторые из них перечислены выше), чтобы их можно было жестко закодировать в Менеджере.

Например, операция GET может быть выполнена с использованием только OID, однако без MIB Manager могут возникнуть проблемы с отображением значения ответа в удобном для человека виде.

Другим примером является операция SET, которая требует, чтобы Manager правильно кодировал значение — его тип можно динамически искать в MIB или жестко запрограммировать в Manager для определенных OID.

Более сложные сценарии включают динамическое создание OID (для адресации записей в таблице SNMP) с использованием структуры индексов, формально определенной MIB.

Запросы GETNEXT/GETBULK предназначены для того, чтобы менеджер не знал о точном наборе OID, предоставленном агентом. Таким образом, Менеджер может перебирать переменные агента, начиная с хорошо известного OID (или даже его префикса). Одним из применений этой функции является получение таблицы SNMP.

Базы MIB написаны на подмножестве языка ASN.1. В отличие от ASN.1, MIB очень специфичны для домена SNMP.

Чтобы использовать MIB с pysnmp, вам необходимо передать MIB ASN.1 сценарию оболочки build-pysnmp-mib (из дистрибутива pysnmp), который вызовет smidump и другие инструменты для преобразования MIB ASN.1 в коллекцию классов Python, представляющих объекты MIB, поддерживаемые pysnmp.

person Ilya Etingof    schedule 22.11.2014