«Нет такого объекта, доступного на этом агенте с этим 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.