![Warum ist die SNMPGET-Ausgabe anders, wenn die Umgebungsvariable MIBS definiert ist?](https://rvso.com/image/782622/Warum%20ist%20die%20SNMPGET-Ausgabe%20anders%2C%20wenn%20die%20Umgebungsvariable%20MIBS%20definiert%20ist%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"
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, snmpget
weiß 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 snmpget
ohne 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-MIB
definiert das MIB-Dokument das Objekt .1.3.6.1.4.1.3375.2.1.14.3.2
wie 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 LongDisplayString
definiert 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- snmpget
Befehl zum Laden von MIB-Dokumenten auffordern, ist dieser sich des Datentyps voll bewusst LongDisplayString
und druckt ihn aus ACTIVE
.
Sie sehen also, dass sich lediglich die Anführungszeichen ändern, aber hinter den Kulissen passiert eine Menge.