![¿Por qué la salida de snmpget es diferente cuando se define la variable de entorno MIBS?](https://rvso.com/image/782622/%C2%BFPor%20qu%C3%A9%20la%20salida%20de%20snmpget%20es%20diferente%20cuando%20se%20define%20la%20variable%20de%20entorno%20MIBS%3F.png)
$ 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, snmpget
sabe 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 snmpget
sin 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-MIB
define el objeto .1.3.6.1.4.1.3375.2.1.14.3.2
como 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 LongDisplayString
define 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 snmpget
al comando NET-SNMP que cargue documentos MIB, es plenamente consciente del tipo de datos LongDisplayString
y de las impresiones ACTIVE
.
Entonces, verás que incluso el único cambio observable son solo las citas, suceden muchas cosas detrás de escena.