Почему вывод snmpget отличается, если определена переменная среды MIBS?

Почему вывод snmpget отличается, если определена переменная среды MIBS?
$ export MIBS=
$ snmpget -Oqv -v 2c -c public 10.xxx.yyy.zzz .1.3.6.1.4.1.3375.2.1.14.3.2.0
"ACTIVE"

но

$ export MIBS=F5-BIGIP-SYSTEM-MIB
$ snmpget -Oqv -v 2c -c public 10.xxx.yyy.zzz .1.3.6.1.4.1.3375.2.1.14.3.2.0
ACTIVE

Почему такая разница в выводе, если переменные среды MIBS имеют значение?

решение1

MIB SNMP определяет типы данных для ваших OID SNMP, поэтому при загрузке MIB он может отображать «отформатированную» версию значения, а не отображать необработанное значение.

Например, сравните:

MIBS= snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3.1
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 24

С:

$ snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3.1
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)

При загрузке MIB-файлов snmpgetзнает, как интерпретировать значение.


В конкретном случае в вашем вопросе MIBS говорит: «отобразить это значение в виде строки».

решение2

Если быть более конкретным.

Без документов MIB инструмент SNMP может определить только самые основные типы данных, определенные самим протоколом.

  • ЦЕЛОЕ ЧИСЛО
  • ОКТЕТНАЯ СТРОКА
  • НУЛЕВОЙ
  • ИДЕНТИФИКАТОР ОБЪЕКТА
  • Айпи адрес
  • Счетчик32
  • Калибр32
  • TimeTicks
  • Непрозрачный
  • Сетевой адрес
  • Счетчик64

Поскольку данные кодируются в формате ASN.1 BER, алгоритм декодирования может извлекать такие типы данных из необработанных байтов, передаваемых по сети.

Таким образом, когда вы запускаете команду NET-SNMP snmpgetбез документов MIB, она просто декодирует данные как СТРОКУ ОКТЕТОВ и печатает как "ACTIVE".

Однако документы MIB в SMI v1 или v2 позволяют определять настраиваемые типы данных на основе таких базовых типов с помощью так называемых "текстовых соглашений". И в вашем случае документ MIB F5-BIGIP-SYSTEM-MIBопределяет объект .1.3.6.1.4.1.3375.2.1.14.3.2следующим образом:

sysCmFailoverStatusStatus OBJECT-TYPE 
    SYNTAX LongDisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The failover status on the system."
    ::= { sysCmFailoverStatus 2 }

Фактический тип данных LongDisplayStringопределен в F5-BIGIP-COMMON-MIB,

LongDisplayString ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "1024a"
    STATUS       current
    DESCRIPTION  "A longer version of SNMPv2-TC::DisplayString."
    SYNTAX       OCTET STRING (SIZE (0..1024))

Таким образом, когда вы просите команду NET-SNMP snmpgetзагрузить документы MIB, она полностью распознает тип данных LongDisplayStringи выводит ACTIVE.

Итак, вы видите, что единственное заметное изменение — это только котировки, многое происходит за кулисами.

Связанный контент