Warum ist die SNMPGET-Ausgabe anders, wenn die Umgebungsvariable MIBS definiert ist?

Warum ist die SNMPGET-Ausgabe anders, wenn die Umgebungsvariable MIBS definiert ist?
$ 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"

Aber

$ 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

Warum gibt es diesen Unterschied in der Ausgabe, wenn die MIBS-Umgebungsvariable einen Wert hat?

Antwort1

Die SNMP-MIB definiert die Datentypen für Ihre SNMP-OIDs, sodass bei geladener MIB eine „formatierte“ Version des Werts angezeigt werden kann, anstatt den Rohwert anzuzeigen.

Vergleichen Sie beispielsweise:

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

Mit:

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

Wenn MIBs geladen werden, snmpgetweiß er, wie der Wert zu interpretieren ist.


Im konkreten Fall Ihrer Frage sagt die MIB: „Zeigen Sie diesen Wert als Zeichenfolge an.“

Antwort2

Um genauer zu sein.

Ohne MIB-Dokumente kann ein SNMP-Tool nur die grundlegenden Datentypen erkennen, die vom Protokoll selbst definiert werden.

  • GANZE ZAHL
  • OKTET-STRING
  • NULL
  • OBJEKTKENNZEICHNUNG
  • IP Adresse
  • Zähler32
  • Spurweite 32
  • Zeitmarken
  • Undurchsichtig
  • Netzadresse
  • Zähler64

Da die Daten in ASN.1 BER codiert sind, kann der Decodierungsalgorithmus solche Datentypen über die Leitung aus Rohbytes extrahieren.

Wenn Sie den Befehl NET-SNMP snmpgetohne MIB-Dokumente ausführen, dekodiert er die Daten daher lediglich als OCTET STRING und druckt sie als aus "ACTIVE".

MIB-Dokumente in SMI v1 oder v2 ermöglichen jedoch die Definition benutzerdefinierter Datentypen auf der Grundlage solcher Basistypen über die sogenannten „Textkonventionen“. Und in Ihrem Fall F5-BIGIP-SYSTEM-MIBdefiniert das MIB-Dokument das Objekt .1.3.6.1.4.1.3375.2.1.14.3.2wie folgt:

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

Der eigentliche Datentyp ist LongDisplayStringdefiniert in 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))

Wenn Sie den NET-SNMP- snmpgetBefehl zum Laden von MIB-Dokumenten auffordern, ist dieser sich des Datentyps voll bewusst LongDisplayStringund druckt ihn aus ACTIVE.

Sie sehen also, dass sich lediglich die Anführungszeichen ändern, aber hinter den Kulissen passiert eine Menge.

verwandte Informationen