SNMP-Tutorial: So funktionieren snmpwalk und snmpget

Das Simple Network Management Protocol (SNMP) zählt zu den etablierten Protokollen für die Kommunikation in Computernetzwerken. Diverse Verwaltungstools greifen auf dieses 1990 veröffentlichte Client-Server-Protokoll zurück und ermöglichen dem Nutzer auf diese Weise, sämtliche Netzwerkgeräte wie Router, Switches oder NAS-Systeme zentral zu überwachen und zu steuern. Die Tools snmpwalk und snmpget erlauben den Abruf von Datensätzen aus MIBs (Management Information Bases) ausgewählter SNMP-Agenten, die auf den meisten Windows- und Linux-Geräten standardmäßig installiert sind. Was genau diese beiden Anwendungen können und wie sie funktionieren, erfahren Sie in diesem SNMP-Tutorial.

Was steckt hinter den Tools snmpwalk und snmpget?

Die Kommandozeilentools snmpwalk und snmpget sind Bestandteil der Suite Net-SNMP, mit der sich SNMP in IPv4- und IPv6-Netzwerken implementieren und nutzen lässt. Die Tool-Sammlung ist für die meisten UNIX- und Linux-Systeme (in der Paketverwaltung) sowie für Microsoft Windows verfügbar, wobei sich die Funktionalität der einzelnen Anwendungen von System zu System leicht unterscheiden kann. snmpwalk und snmpget zählen dabei zu den enthaltenen Lösungen für den Informationsabruf von SNMP-fähigen Geräten durch einfachen GET-Request (snmpget) bzw. mehrfache GETNEXT-Requests (snmpwalk).

Zur Anzeige dieses Videos sind Cookies von Drittanbietern erforderlich. Ihre Cookie-Einstellungen können Sie hier aufrufen und ändern.

snmpget: Einfache SNMP-Abfragen

Mit der Anwendung snmpget lassen sich Informationen eines Netzwerkteilnehmers über das Simple Network Management Protocol abrufen. Hierfür wird der SNMP-Nachrichtentyp „GET“ verwendet, der einen spezifischen Datensatz auf dem Zielsystem anfordert. Zu diesem Zweck müssen der Host (Name oder IP-Adresse), der Community-String bzw. die Authentifizierungsinformationen (SNMPv3) sowie die passende Identifikationsnummer (Object Identifier, OID) als Argumente angegeben werden.

snmpget [Optionen] [Community-String/Authentifizierungs-Informationen] [Host-Name/-Adresse] [Object Identifier]

snmpwalk: SNMP-Abfragen kompletter MIBs

Mit dem Tool snmpwalk rufen Sie nicht nur einen bestimmten Datensatz auf dem anvisierten SNMP-fähigen Gerät ab, sondern auch nachfolgende Datensätze (beispielsweise bei Tabellen relevant). Für die Abfrage eines solchen kompletten Informationsbaums – also einer vollständigen MIB – nutzt snmpwalk Nachrichten vom Typ „GETNEXT“, die solange Informationen vom Agenten anfordern, bis das Ende der jeweiligen MIB erreicht ist. Hinsichtlich der Syntax unterscheidet sich die Nutzung von snmpwalk nicht von den einfachen Abfragen mit snmpget.

snmpwalk [Optionen] [Community-String/Authentifizierungs-Informationen] [Host-Name/-Adresse] [OID]

SNMP-Tutorial: Die wichtigsten snmpget- und snmpwalk-Befehle

Als Kommandozeilentools lassen sich snmpwalk und snmpget problemlos über das Terminal bzw. die Eingabeaufforderung bedienen. Haben Sie die Net-SNMP-Suite also auf Ihrem System installiert, können Sie umgehend mit der Abfrage der gewünschten Netzwerkinformationen beginnen, indem Sie die jeweilige Kommandozeile öffnen. Wir haben einige entscheidende Befehle für beide Programme in diesem SNMP-Tutorial zusammengefasst.

Hinweis

Installationspakete für Net-SNMP finden Sie im Downloadbereich der offiziellen Homepage. Da die Binärdateien für Windows auf der OpenSSL-Version 0.9.8r aufbauen, funktioniert die Installation jedoch aus Kompatibilitätsgründen nicht auf Systemen, die Version 1.0 oder höher installiert haben.

So funktioniert die Datenabfrage mit snmpget

Um den Einstieg in die Möglichkeiten von snmpget zu vereinfachen, können Sie im ersten Schritt das Hilfsmenü des Tools aufrufen. Dieses listet die verfügbaren Parameter inklusive kurzer Erklärungen auf und lässt sich mit folgendem Befehl öffnen:

snmpget -h

Wie der Befehl für eine standardmäßige Abfrage eines ausgewählten Datensatzes aussieht, hängt in erster Linie von der zugrundeliegenden Protokollversion ab. Diese wird einerseits in den Parametern angegeben und bestimmt andererseits, ob der Community-String (SNMPv1 und SNMPv2c) oder die jeweilige Authentifizierungsmethode (authNoPriv, authPriv, noAuthNoPriv) inklusive entsprechender Anmeldeinformationen (SNMPv3) folgen. Um beispielsweise abzufragen, ob ein Firmware-Update bzw. ein Update des Betriebssystems verfügbar ist, tippen Sie eine der fünf folgenden versionsspezifischen Befehlsmöglichkeiten ein:

snmpget-Abfrage via SNMPv1:

snmpget -v1 -c [Community-String] [IP-Adresse des Hosts] [OID für Update-Check]

snmpget-Abfrage via SNMPv2:

snmpget -v2c -c [Community-String] [IP-Adresse des Hosts] [OID für Update-Check]

snmpget-Abfrage via SNMPv3 (Authentifizierung, aber keine Verschlüsselung):

snmpget -v3 -l authNoPriv -u [User-Name] -a MD5 -A [MD5-Hash des User-Passworts] [IP-Adresse des Hosts] [OID für Update-Check]

snmpget-Abfrage via SNMPv3 (Authentifizierung und Verschlüsselung):

snmpget -v3 -l authPriv -u [User-Name] -a MD5 -A [User-Passwort] -x DES -X [DES-Passwort] [IP-Adresse des Hosts] [OID für Update-Check]

snmpget-Abfrage via SNMPv3 (keine Authentifizierung, keine Verschlüsselung):

snmpget -v3 -l noAuthNoPriv -u [User-Name] [IP-Adresse des Hosts] [OID für Update-Check]

Als Ergebnis der Abfrage erhalten Sie einen numerischen Wert, der Sie über den Update-Status informiert. Der Wert „1“ zeigt beispielsweise an, dass eine Aktualisierung verfügbar ist, während der Wert „2“ präsentiert wird, wenn Firmware bzw. Betriebssystem bereits auf dem neuesten Stand sind. Um die Rückgabewerte besser lesen und interpretieren zu können, laden Sie die erforderliche MIB auf den Rechner, mit dem Sie die SNMP-Abfrage durchführen, und kopieren Sie die entsprechende Datei in das Verzeichnis /usr/share/snmp/mibs. Unter Linux/UNIX können Sie zu diesem Zweck einen MIB-Downloader installieren, der Sie bei diesem Vorhaben unterstützt.

sudo apt install snmp-mibs-downloader

So funktioniert die Abfrage kompletter MIBs mit snmpwalk

Auch snmpwalk gibt Ihnen die Möglichkeit, eine Übersicht erforderlicher und verfügbarer Parameter aufzurufen. Dieses Hilfsmenü erscheint nach der Eingabe des folgenden Befehls:

snmpwalk -h

Auch hinsichtlich der Datenabfrage unterscheidet sich snmpwalk kaum von snmpget. Der Unterschied besteht hauptsächlich in der Ausführung der Befehle: Während snmpget nur einen einzigen Wert zur angeforderten OID zurückgibt oder eine Fehlermeldung anzeigt, wenn kein Objekt hinter der Identifikationsnummer verfügbar ist, durchläuft snmpwalk auch sämtliche Unterknoten. So lässt sich etwa eine detaillierte Auflistung relevanter Systeminformationen anzeigen, wenn die Identifikationsnummer der entsprechenden MIB bekannt ist. Wie bei den einfachen GET-Requests kommt es bei den erforderlichen Befehlen auf die gewählte Protokollversion an:

snmpwalk-Abfrage via SNMPv1:

snmpwalk -v1 -c [Community-String] [IP-Adresse des Hosts] [OID der Systeminformations-MIB]

snmpwalk-Abfrage via SNMPv2:

snmpwalk -v2c -c [Community-String] [IP-Adresse des Hosts] [OID der Systeminformations-MIB]

snmpwalk-Abfrage via SNMPv3 (Authentifizierung, aber keine Verschlüsselung):

snmpwalk -v3 -l authNoPriv -u [User-Name] -a MD5 -A [User-Passwort] [IP-Adresse des Hosts] [OID der Systeminformations-MIB]

snmpwalk-Abfrage via SNMPv3 (Authentifizierung und Verschlüsselung):

snmpwalk -v3 -l authPriv -u [User-Name] -a MD5 -A [User-Passwort] -x DES -X [DES-Passwort] [IP-Adresse des Hosts] [OID der Systeminformations-MIB]

snmpwalk-Abfrage via SNMPv3 (keine Authentifizierung, keine Verschlüsselung):

snmpwalk -v3 -l noAuthNoPriv -u [User-Name] [IP-Adresse des Hosts] [OID der Systeminformations-MIB]
Fazit

snmpwalk und snmpget helfen Ihnen dabei, gewünschte Netzwerkdaten via Simple Network Management Protocol abzufragen. Als Teil der Net-SNMP-Suite sind die beiden Kommandozeilentools schnell auf dem eigenen System installiert und ebenso einfach zu bedienen. Dieses SNMP-Tutorial hat aufgezeigt, wie unkompliziert sich eine einzelne Information bzw. ein kompletter Informationsblock ansteuern lässt, sofern Sie die IP-Adresse des SNMP-Agenten und den jeweiligen Object Identifier kennen.