Вопрос или проблема
В настоящее время я пытаюсь получить расширенный вывод на SNMPWalk.
Я установил загрузчик snmp-mibs и выполнял download-mibs.
Я использую следующую команду:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB::nsExtendObjects
и получаю следующую ошибку:
Поиск MIB:
/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/var/lib/mibs:/var/lib/mibs/ietf:/var/lib/mibs/iana
Не удается найти модуль (nsExtendObjects): в строке 1 в (none)
Я могу подтвердить, что мои модули находятся в правильном месте, так как я проверял это вручную.
Я пробовал использовать -M для указания расположения модулей.
Я использую версию NET-SNMP: 5.9
После ошибки я получаю такой же вывод, как если бы я не использовал расширенный режим.
Я также могу подтвердить, что должен быть другой вывод, так как другая машина с той же конфигурацией может получить расширенный вывод. Строка “public” правильная.
Спасибо за любую помощь 🙂
Опция -m
принимает параметр: список имен модулей MIB, разделенных двоеточием, а не имена отдельных объектов MIB.
В результате -m NET-SNMP-EXTEND-MIB::nsExtendObjects
интерпретируется как три имени модуля MIB:
NET-SNMP-EXTEND-MIB
, что является действительным именем модуля MIB<null>
, которое, очевидно, игнорируетсяnsExtendObjects
, которое на самом деле является именем объекта MIB внутри модуля NET-SNMP-EXTEND-MIB.
Указание OID, с которого начинать обход, на самом деле является необязательным для snmpwalk
: если оно не указано, по умолчанию будет использовано SNMPv2-SMI::mib-2
, и поэтому вы не получаете сообщение об ошибке из-за неправильного синтаксиса. Вместо этого команда пытается найти модуль MIB с именем nsExtendObjects
и, очевидно, не находит его.
Если вы хотите продолжать использовать опцию -m
по какой-то причине, правильный синтаксис будет:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB NET-SNMP-EXTEND-MIB::nsExtendObjects
Другими словами, первый NET-SNMP-EXTEND-MIB
является параметром для опции -m
, а второй является частью OID, с которого вы хотите начать обход.
Но в этом случае вы, вероятно, можете просто опустить опцию -m
полностью:
snmpwalk -v2c -c public [ip] NET-SNMP-EXTEND-MIB::nsExtendObjects
Оба эти варианта должны давать одинаковый результат.
Если download-mibs
был успешно завершен, у вас должен быть файл с именем /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
на вашей системе.
$ sha256sum /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
ad05abc5ec39107a140d46e4e62e3fc0cf38eb26c1abe634fd7e9a7c7715e64e /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
Ответ или решение
Решение проблемы: Модуль SNMPWalk не найден
Когда вы сталкиваетесь с ошибкой при выполнении команды snmpwalk
, такой как «Cannot find module (nsExtendObjects)», это может быть вызвано несколькими факторами, связанными с синтаксисом и размещением MIB-файлов. Ниже представлено подробное руководство по устранению данной проблемы.
1. Понимание ошибки
Как указано в сообщении об ошибке, система не может найти модуль с именем nsExtendObjects
. Это происходит из-за неправильного использования параметра -m
. Давайте разберем структуру вашей команды:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB::nsExtendObjects
Параметр -m
принимает список имен модулей, а не отдельных объектов MIB. Ваша команда интерпретируется следующим образом:
NET-SNMP-EXTEND-MIB
– это корректное имя MIB.nsExtendObjects
– это имя объекта в этом MIB, которое не может быть интерпретировано корректно как имя модуля.
Таким образом, строка NET-SNMP-EXTEND-MIB::nsExtendObjects
фактически разбивается на три части, из-за чего возникает ошибка.
2. Корректное использование команды
Чтобы правильно выполнить команду и обеспечить нужный вывод, есть два способа.
Вариант 1: Оставить -m
и указать объект
Вы можете использовать следующий синтаксис:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB NET-SNMP-EXTEND-MIB::nsExtendObjects
В этом случае вы правильно указываете модуль и объект, с которого хотите начать обход.
Вариант 2: Опустить -m
Если MIB-файлы были успешно загружены, вы можете просто опустить параметр -m
:
snmpwalk -v2c -c public [ip] NET-SNMP-EXTEND-MIB::nsExtendObjects
Эта команда должна сработать без ошибок, если MIB-файл доступен и корректно установлен.
3. Проверка расположения MIB-файлов
Убедитесь, что файл NET-SNMP-EXTEND-MIB.txt
действительно присутствует в каталоге /usr/share/snmp/mibs/
. Для этого выполните команду:
ls /usr/share/snmp/mibs/
Также проверьте контрольную сумму файла, как указано:
sha256sum /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
Убедитесь, что она соответствует ожидаемой. Если файла нет, выполните команду download-mibs
повторно.
4. Рекомендации по устранению неполадок
- Убедитесь, что переменные среды для поиска MIB установлены правильно. Например, проверьте переменные
MIBS
иMIBS_PATH
. - Проверьте версию SNMP и MIB-менеджера, убедитесь, что вы используете совместимые версии.
Заключение
Следуя приведенным инструкциям, вы сможете устранить проблему с «модуль SNMPWalk не найден». Если проблема все равно не решается, рекомендуется провести дополнительный анализ или обратиться к документации вашего SNMP-менеджера.