Por que a saída do snmpget é diferente quando a variável de ambiente MIBS é definida?

Por que a saída do snmpget é diferente quando a variável de ambiente MIBS é definida?
$ 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, snmpgetsabe 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 snmpgetsem 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-MIBdefine o objeto .1.3.6.1.4.1.3375.2.1.14.3.2conforme 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 é LongDisplayStringdefinido 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 snmpgetpara carregar documentos MIB, ele está totalmente ciente do tipo de dados LongDisplayStringe 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.

informação relacionada