Wenn Sie jemals mit SNMP und insbesondere mit SNMP in PHP zu tun hatten, wissen Sie, wie wichtig genaue Zuordnungen von Namen zu OIDs sind. Diese Bibliothek bietet das und noch viel mehr, indem sie die SNMP-Bibliothek – Net-SNMP
– PHP zugänglich macht!
Wenn Sie SNMP gehasst haben, hoffe ich, dass diese Bibliothek Sie davon überzeugen kann, damit aufzuhören ;)
SNMP ist ein Netzwerkprotokoll, das den Informationsaustausch zwischen Hosts ermöglicht. Stellen Sie sich das wie ein REST aus den 1990er Jahren vor. Obwohl das Protokoll sicherlich veraltet ist, wird es immer noch überall verwendet ... und ist daher auf fast jeder netzwerkfähigen Hardware verfügbar.
Heutzutage wird SNMP hauptsächlich zum Abrufen von Metriken verwendet (z. B. eine Liste der mit einem WLAN-Zugangspunkt verbundenen Geräte oder freier Speicherplatz auf einem Server) ... aber niemand hat gesagt, dass es nicht zur Steuerung Ihrer Kaffeekanne verwendet werden kann!
MIB oder Management Information Base ist eine Sammlung von Textdateien, die eine Beschreibung der auf einem Remote-System vorhandenen Daten enthalten. Ohne diese Dateien bestehen die meisten Informationen nur aus bedeutungslosen Zahlen und Zeichenfolgen. Noch schlimmer ist, dass Sie ohne MIBs nicht sysUpTime.0
anfordern können, sondern 1.3.6.1.2.1.1.3.0
... Huch!
MIBs, die auf einem System installiert sind, das einen Remote-SNMP-Host anruft, ermöglichen eine einfache Abfrage und Validierung der Daten. Sie beschreiben auch genau, WAS vom Remote-System angefordert werden kann.
Fast jedes *nix-System verfügt über Net-SNMP
-Bibliothek und entsprechende Tools. Um beispielsweise die Struktur anzuzeigen, die installierte Festplatten auf einem Synology NAS beschreibt, können Sie mit einem einzigen Befehl einen schönen Baum drucken:
% snmptranslate -Tp 'SYNOLOGY-DISK-MIB::diskTable'
+--diskTable(1)
|
+--diskEntry(1)
| Index: diskIndex, diskStatus
|
+-- ---- Integer32 diskIndex(1)
| Range: 0..2147483647
+-- -R-- String diskID(2)
+-- -R-- String diskModel(3)
+-- -R-- String diskType(4)
+-- -R-- Integer32 diskStatus(5)
| Range: 1..5
+-- -R-- Integer32 diskTemperature(6)
Allerdings gibt es keinen programmatischen Zugriff auf alle in diesem Baum dargestellten Informationen (und das Parsen ist ein fragiler Albtraum).
Net-SNMP
bietet alles Notwendige und ist die Bibliothek für SNMP-Interaktionen und MIB-Analyse. Leider ist es in C
geschrieben und hat keine PHP-Bindung. Da sich der MIB-Standard seit fast 35 Jahren in der aktiven Entwicklung befindet, gibt es außer Net-SNMP
praktisch keine vollständig kompatiblen Optionen.
Net-SNMP
nicht in PHP verwenden?! Ja! Seit PHP 7.4 ist es dank FFI möglich. Es ist nicht einfach, da an vielen Orten eine Menge antiker C-Magie vorhanden ist, aber dennoch möglich.
Diese Bibliothek verbirgt die Komplexität hinter einer schönen objektorientierten Schnittstelle.
(Beispiel oben ist im
examples
enthalten)
libnetsnmp
/usr/lib/libnetsnmp.25.dylib
) sowie alle Tools wie snmptranslate
snmp
) Die Bibliothek selbst ist MIT-lizenziert. Der Code verwendet jedoch Teile von Net-SNMP und enthält diese. Der Code-Quellbaum enthält Teile von Net-SNMP-Header-Dateien sowie Strukturen (z. B. Konstanten), die von C nach PHP übersetzt wurden.
Einzelheiten zur NET-SNMP-Lizenzierung finden Sie unter LICENSE-NETSNMP.
Ich bin kein Anwalt, aber dieses Zeug ist kostenlos und Open Source und Sie können es verwenden – gehen Sie einfach fair und geben Sie die Lizenzen an ;)