добавить новый главный агент MIB - PullRequest
5 голосов
/ 28 марта 2012

Я следовал инструкциям на веб-сайте net-snmp , чтобы добавить собственную поддержку MIB к главному агенту.

Вот что я сделал:

  1. Я создал файлы поддержки .c и .h в папке net-snmp / agent / mibgroup /.
  2. Я скопировал файл MIB в папку / usr / local / share / snmp / mibs /.
  3. Я запустил "./configure --with-mib-modules =" myMib ""
  4. Я запустил "make" и "make install"
  5. Я запустил snmpd с помощью "snmpd -f -Le -d -c snmpd.conf & "
  6. Я могу увидеть свою структуру MIB, выполнив команду snmpdtranslte.Однако, когда я пытаюсь использовать snmpget -v2c -c public "MY-MIB-FILE :: myVariable", я продолжаю получать "*** = Нет такого объекта, доступного для этого агента с этим OID".

Я сделал именно то, что написано в руководстве, и я могу запустить snmpget и snmpset на примере NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.

Пожалуйста, помогите мне понять, что я здесь упустил.

Ответы [ 5 ]

7 голосов
/ 03 апреля 2012

«Нет такого объекта, доступного на этом агенте с этим OID», означает, что, что касается netsnmpd, в его дереве нет соответствующего OID.

Не запутайтесь в успехе snmptranslate. Snmptranslate работает только с самими файлами MIB и вообще не требует доступа к серверу snmp. Таким образом, тот факт, что snmptranslate показывает ваши MIB-данные правильно, является лишь указанием на то, что ваш MIB правильно скопирован в $MIBDIRS или в каталоги, перечисленные в вашем файле .snmp/snmp.conf (и т. Д.).

Предполагая, что вы следуете учебнику, реализованная вами MIB предоставляет единственную скалярную переменную. Скалярным переменным присваивается индекс (т. Е. Суффикс) .0. Попробуйте выполнить одну из следующих команд:


snmpget -v2c -c public MY-MIB-FILE::myVariable.0

Или:


snmpwalk -v2c -c public MY-MIB-FILE::myVariable

Последний предоставит вам список всех листьев MIB под этим OID, который (в вашем случае) будет включать узел .0.

Если это не помогло, стоит убедиться, что ваш код компилируется и выполняется правильно. Для начала проверьте подробности в конце шага ./configure, чтобы убедиться, что в сводке указан ваш MIB. например. (результат из ./configure --with-mib-modules = "nstAgentModuleObject"):


---------------------------------------------------------
            Net-SNMP configuration summary:
---------------------------------------------------------

  SNMP Versions Supported:    1 2c 3
  Net-SNMP Version:           5.4.1
  Building for:               linux
snip
  Agent MIB code:             nstAgentModuleObject default_modules =>  snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
snip
---------------------------------------------------------

В первом случае вы можете запустить nm над исполняемым файлом snmpd agent/.libs/libnetsnmpmibs.so и убедиться, что функция init_X(), соответствующая вашей MIB, присутствует. Также стоит убедиться в наличии функции init_nstAgentModuleObject(). Если вы используете make install перед тестированием, стоит убедиться (используя ldd), что используемая библиотека libnetsnmpmibs.so - это та, которую вы только что создали, и что у вас нет проблем с путями .

Вы можете использовать встроенную систему отладочных сообщений, добавив вызовы DEBUGMSGTL() в вашу функцию init_X(). Чтобы увидеть сообщения отладки, добавьте параметр -DALL в командной строке snmpd.

2 голосов
/ 24 июня 2015

Попробуйте запустить свой агент из директории сборки. Net-SNMP-x.x.x / агент.

./snmpd -f -L -d -c /usr/local/etc/snmpd.conf

И остановите все остальные агенты SNMP.

В моем случае, если я бегу

snmpd -f -Le -d -c snmpd.conf &

эта команда запускает предустановленный демон snmp.

2 голосов
/ 31 марта 2012

Сообщение No Such Object available on this agent at this OID появляется, когда агент вообще не поддерживает запрошенный объект MIB или когда переменная индекса или экземпляра не указана.

Из учебника, на который вы ссылались, вы добавилисоответствующая конфигурация для строки сообщества public?

Например,

Запустив snmpconf, как описано здесь .

Также см. изменения конфигурации, упомянутые в разделе "Начинающий" иРаздел «Советы по отладке» здесь .

Похоже, у вас также нет индекса или экземпляра, заданного для вашей переменной, он должен выглядеть следующим образом:

snmpget -v2c -c public MY-MIB-FILE::myVariable.0.

Вы можете также попытаться явно указать хост и порт, на котором работает ваш главный агент, если он не находится в snmpd.conf.

1 голос
/ 25 декабря 2014

ldd стоит проверить, в моем случае snmpd был динамически связан со стандартной Ubuntu libnetsnmpmibs.so, и я не получил пользовательскую поддержку MIB, хотя и следовал тому же учебнику.

Исправлены проблемы с динамической компоновкой и все получилось!

0 голосов
/ 16 января 2017

snmpd.conf

  view  systemonly  included  .1.3.6.1.4.1.8072.2.4.1.1.1
...