
$ 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"
mas
$ 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 que essa diferença na saída quando as variáveis de ambiente MIBS têm um valor?
Responder1
O mib SNMP define os tipos de dados para seus OIDs SNMP, portanto, com o MIB carregado, ele pode exibir uma versão "formatada" do valor em vez de exibir o valor bruto.
Por exemplo, 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
Com:
$ 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)
Quando os mibs são carregados, snmpget
sabe interpretar o valor.
No caso específico da sua pergunta, o mibs diz "exibir esse valor como uma string".
Responder2
Para ser mais específico.
Sem documentos MIB, uma ferramenta SNMP só pode informar os tipos de dados básicos definidos pelo próprio protocolo,
- INTEIRO
- CADEIA DE OCTETOS
- NULO
- IDENTIFICADOR DE OBJETO
- Endereço de IP
- Contador32
- Medidor32
- TimeTicks
- Opaco
- Endereço de rede
- Contador64
Como os dados são codificados em ASN.1 BER, o algoritmo de decodificação pode extrair esses tipos de dados de bytes brutos pela rede.
Assim, quando você executa o comando do NET-SNMP snmpget
sem documentos MIB, ele simplesmente decodifica os dados como OCTET STRING e imprime como "ACTIVE"
.
No entanto, os documentos MIB no SMI v1 ou v2 permitem que tipos de dados personalizados sejam definidos em tais tipos básicos através das chamadas "Convenções Textuais". E no seu caso, o documento MIB F5-BIGIP-SYSTEM-MIB
define o objeto .1.3.6.1.4.1.3375.2.1.14.3.2
conforme abaixo,
sysCmFailoverStatusStatus OBJECT-TYPE
SYNTAX LongDisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The failover status on the system."
::= { sysCmFailoverStatus 2 }
O tipo de dados real é LongDisplayString
definido em 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))
Assim, quando você solicita ao comando NET-SNMP snmpget
para carregar documentos MIB, ele está totalmente ciente do tipo de dados LongDisplayString
e imprime arquivos ACTIVE
.
Então, você vê que mesmo a única mudança observável são apenas as aspas, muita coisa acontece nos bastidores.