¿Por qué la salida de snmpget es diferente cuando se define la variable de entorno MIBS?

¿Por qué la salida de snmpget es diferente cuando se define la variable de entorno 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"

pero

$ 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

¿Por qué esa diferencia en la salida cuando las variables de entorno MIBS tienen un valor?

Respuesta1

El MIB SNMP define los tipos de datos para sus OID SNMP, por lo que con el MIB cargado puede mostrar una versión "formateada" del valor en lugar de mostrar el valor sin formato.

Por ejemplo, compare:

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

Con:

$ 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)

Cuando se cargan mibs, snmpgetsabe interpretar el valor.


En el caso particular de su pregunta, mibs dice "muestra ese valor como una cadena".

Respuesta2

Para ser más especifico.

Sin documentos MIB, una herramienta SNMP sólo puede indicar los tipos de datos muy básicos definidos por el propio protocolo.

  • ENTERO
  • CADENA DE OCTETO
  • NULO
  • IDENTIFICADOR DE OBJETO
  • Dirección IP
  • Contador32
  • Calibre 32
  • tictac del tiempo
  • Opaco
  • Dirección de red
  • contador64

Dado que los datos están codificados en ASN.1 BER, el algoritmo de decodificación puede extraer dichos tipos de datos de bytes sin procesar a través del cable.

Por lo tanto, cuando ejecuta el comando NET-SNMP snmpgetsin documentos MIB, simplemente decodifica los datos como OCTET STRING y los imprime como "ACTIVE".

Sin embargo, los documentos MIB en SMI v1 o v2 permiten definir tipos de datos personalizados sobre dichos tipos básicos a través de las llamadas "Convenciones textuales". Y en su caso, el documento MIB F5-BIGIP-SYSTEM-MIBdefine el objeto .1.3.6.1.4.1.3375.2.1.14.3.2como se muestra a continuación,

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

El tipo de datos real se LongDisplayStringdefine en 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))

Por lo tanto, cuando solicita snmpgetal comando NET-SNMP que cargue documentos MIB, es plenamente consciente del tipo de datos LongDisplayStringy de las impresiones ACTIVE.

Entonces, verás que incluso el único cambio observable son solo las citas, suceden muchas cosas detrás de escena.

información relacionada