Signatur
Beschreibung
Mit snmp_set_enum_print() kann festgelegt werden, wie SNMP-Enum-Werte in PHP-Abfragen repräsentiert werden. Wird die Funktion mit true aufgerufen, gibt die SNMP-Erweiterung Enum-Werte als sprechende Bezeichnungen (z. B. "up" statt 1) zurück, wie sie in der MIB-Datenbank definiert sind.
Standardmäßig liefert PHP die rohen Integer-Werte der Enums, was für maschinelle Verarbeitung ausreichend, für Menschen aber schwer lesbar ist. Durch Aktivierung des Enum-Prints vereinfacht sich das Debuggen und die Auswertung von SNMP-Antworten erheblich.
Die Einstellung gilt global für alle nachfolgenden SNMP-Abfragen innerhalb des Skripts. Sie wird typischerweise einmalig zu Beginn eines SNMP-Abfrage-Abschnitts gesetzt und kann bei Bedarf wieder deaktiviert werden. Die MIB-Übersetzung muss korrekt geladen sein (z. B. via snmp_read_mib()), damit die Bezeichnungen aufgelöst werden können.
Diese Funktion gehört zur prozeduralen SNMP-API und wirkt sich auf alle Funktionen wie snmpget(), snmpwalk() etc. aus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $enable Pflicht | bool | true aktiviert die Ausgabe von Enum-Werten als Bezeichnungen; false deaktiviert sie und stellt die Ausgabe roher Integer-Werte wieder her. |
Rückgabewert
true zurück, wenn die Einstellung erfolgreich gesetzt wurde, andernfalls false.Beispiele
Enum-Bezeichnungen bei einem SNMP-Get aktivieren
<?php
// Enum-Ausgabe als Bezeichnung aktivieren
snmp_set_enum_print(true);
// SNMP-Abfrage: ifOperStatus gibt z. B. 'up', 'down', 'testing' zurück
$result = snmpget('192.168.1.1', 'public', 'IF-MIB::ifOperStatus.1');
if ($result !== false) {
echo "Interface-Status: " . $result . PHP_EOL;
// Ausgabe: Interface-Status: up (statt: 1)
} else {
echo "SNMP-Abfrage fehlgeschlagen." . PHP_EOL;
}
// Enum-Ausgabe wieder deaktivieren (rohe Integers)
snmp_set_enum_print(false);
Vergleich mit und ohne Enum-Print
<?php
$host = '192.168.1.1';
$comm = 'public';
$oid = 'IF-MIB::ifOperStatus.1';
// Ohne Enum-Print: roher Integer-Wert
snmp_set_enum_print(false);
$raw = snmpget($host, $comm, $oid);
echo "Roh: " . $raw . PHP_EOL; // z. B. INTEGER: 1
// Mit Enum-Print: sprechende Bezeichnung
snmp_set_enum_print(true);
$labeled = snmpget($host, $comm, $oid);
echo "Bezeichnung: " . $labeled . PHP_EOL; // z. B. INTEGER: up
// Wichtig · Fallstricke
MIB-Verfügbarkeit: Damit Enum-Bezeichnungen korrekt aufgelöst werden, muss die entsprechende MIB-Datei geladen sein. Dies geschieht entweder über die PHP-Konfiguration (snmp.mib_parse) oder explizit mittels snmp_read_mib(). Fehlt die MIB, werden möglicherweise trotzdem Integers zurückgegeben.
Globale Wirkung: Die Einstellung ist global und beeinflusst alle nachfolgenden SNMP-Funktionsaufrufe im selben PHP-Prozess. In Umgebungen mit persistenten Verbindungen oder gemeinsam genutzten Prozessen (z. B. FastCGI) sollte der Zustand nach der Verwendung zurückgesetzt werden.
OOP-Alternative: Bei Verwendung der objektorientierten SNMP-Klasse (SNMP) steht die Eigenschaft $snmp->enum_print zur Verfügung, die dasselbe steuert, jedoch instanzgebunden ist.