Start · Sprachen · PHP · Referenz · snmp_read_mib

snmp_read_mib

Funktion

Liest und parst eine MIB-Datei und fügt deren Definitionen in den aktiven SNMP-MIB-Baum ein.

seit PHP 5.0.0 Kategorie: http

Signatur

snmp_read_mib(string $filename): bool

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

Typ
bool
Beschreibung
Gibt 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";
}
?>
MIB erfolgreich geladen. OID-Wert: STRING: "Beispielwert"

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);
?>
Geladen: /usr/share/snmp/mibs/VENDOR-MIB-1.txt Geladen: /usr/share/snmp/mibs/VENDOR-MIB-2.txt

// 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.