Signatur
Beschreibung
snmp_read_mib() lädt eine MIB-Datei (Management Information Base) vom Dateisystem und integriert die darin enthaltenen OID-Definitionen in den aktuell aktiven MIB-Baum der SNMP-Erweiterung. Dadurch können symbolische OID-Namen (z. B. sysDescr.0) anstelle numerischer OIDs (z. B. .1.3.6.1.2.1.1.1.0) in nachfolgenden SNMP-Abfragen verwendet werden.
Die Funktion ist besonders nützlich, wenn herstellerspezifische oder benutzerdefinierte MIB-Dateien eingebunden werden sollen, die nicht Teil der Standard-MIB-Distribution sind. Nach dem erfolgreichen Laden stehen alle in der MIB definierten Objekte für menschenlesbare OID-Auflösung zur Verfügung.
Voraussetzung ist, dass PHP mit SNMP-Unterstützung (net-snmp) kompiliert wurde. Die MIB-Datei muss im korrekten MIB-Format vorliegen und für den PHP-Prozess lesbar sein. Die Funktion beeinflusst den globalen MIB-Zustand der SNMP-Bibliothek innerhalb des aktuellen PHP-Prozesses.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Absoluter oder relativer Pfad zur MIB-Datei, die geladen werden soll. Die Datei muss im Standard-MIB-Format vorliegen und vom PHP-Prozess lesbar sein. |
Rückgabewert
true zurück, wenn die MIB-Datei erfolgreich geladen und geparst wurde, andernfalls false (z. B. wenn die Datei nicht existiert, nicht lesbar ist oder Syntaxfehler enthält).Beispiele
MIB-Datei laden und symbolische OID verwenden
<?php
// Eigene MIB-Datei laden
$result = snmp_read_mib('/usr/share/snmp/mibs/MY-ENTERPRISE-MIB.txt');
if ($result) {
echo "MIB erfolgreich geladen.\n";
// Jetzt kann die symbolische OID aus der geladenen MIB verwendet werden
$value = snmpget('192.168.1.1', 'public', 'MY-ENTERPRISE-MIB::myCustomObject.0');
echo "OID-Wert: " . $value . "\n";
} else {
echo "Fehler beim Laden der MIB-Datei.\n";
}
?>
Mehrere MIB-Dateien sequenziell laden
<?php
$mibs = [
'/usr/share/snmp/mibs/VENDOR-MIB-1.txt',
'/usr/share/snmp/mibs/VENDOR-MIB-2.txt',
];
foreach ($mibs as $mib) {
if (snmp_read_mib($mib)) {
echo "Geladen: $mib\n";
} else {
echo "Fehler beim Laden: $mib\n";
}
}
// SNMP-Abfrage mit symbolischen Namen aus beiden MIBs
$oid = snmpwalk('192.168.1.1', 'public', 'VENDOR-MIB-1::vendorTable');
print_r($oid);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Wenn der Pfad zur MIB-Datei aus Benutzereingaben stammt, muss dieser unbedingt validiert und auf erlaubte Verzeichnisse beschränkt werden, um Path-Traversal-Angriffe zu verhindern.
Abhängigkeit von net-snmp: Die Funktion setzt voraus, dass PHP mit der net-snmp-Bibliothek kompiliert wurde. Ohne diese Bibliothek ist die gesamte SNMP-Erweiterung und damit auch snmp_read_mib() nicht verfügbar.
Globaler Zustand: Das Laden einer MIB-Datei beeinflusst den globalen Zustand der SNMP-Bibliothek im aktuellen PHP-Prozess. Bei Verwendung in Umgebungen mit persistenten Prozessen (z. B. PHP-FPM) bleibt der MIB-Baum über mehrere Anfragen hinweg erhalten.
Fehler beim Parsen der MIB-Datei können je nach Konfiguration als PHP-Warnungen ausgegeben werden. Es empfiehlt sich, den Rückgabewert stets zu prüfen.