Модуль SNMPWalk не найден

Вопрос или проблема

В настоящее время я пытаюсь получить расширенный вывод на 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-менеджера.

Оцените материал
Добавить комментарий

Капча загружается...