Hallo Community,
so, jetzt hab ich mich nach über einem Jahr reinem Skriptkopieren und rumbasteln mal an meinen ersten eigenen Gehversuch gewagt und hänge gleich an einem Problem:
Ich lese über die includete „php_snmp.dll“ diverse Werte von meinem HP Procurve 1800 Switch aus. Das klappt auch so weit.
Nun möchte ich für jeden Port den Status auslesen und „schön“ im Webfront darstellen. Im Prinzip funktioniert das auch schon, ich hab das mit den ersten 4 Ports mal händisch copy & paste umgesetzt. Nur gibt das vieeeel Quelltext für 24Ports. Das geht doch sicher auch irgend wie deutlich schöner, oder?
Mein erster Gedanke war natürlich eine Schleife… gleich in Tonis kleinem Programmierhandbuch nachgelesen. Aber irgend wie hat es an einer sinnvollen Umsetzung gehapert.
Wie bekomm ich die Ports 1-24 (MIB mit Endung .101 - .124) inklusive Status sauber ausgelesen und verarbeitet???
Und wie könnte man das ganze noch besser / schöner darstellen? Ich habe es über Boolen und das Switch-Profil einmal getestet in der Hoffnung, das die Schaltflächen rot/grün farbig werden. Hat aber auch nicht geklappt? Hab dann wieder auf String und Text zurück gestellt. Jemand gute Vorschläge?
<?
$host = "192.168.254.5"; //Host des Switch
$community = "public"; //Read-Community String für SNMP
// Uptime Auslesen
$uptime = snmpget("$host","$community",".1.3.6.1.2.1.1.3.0"); //Uptime des Switch per SNMP-Abfrage
$pos = strpos($uptime, ")"); //Suche nach Position von ")"
$pos = $pos + "2"; // +2 um ) und das Leerzeichen zu überspringen
$uptime = substr($uptime, $pos, -3); // Schmeiss alles vor Position oben und die letzten 3 Zeichen ".00" raus.
SetValueString(53745 /*[Netzwerk\Uptime von Switch]*/, $uptime." - HH:MM:SS"); //Schreibe Uptime in Variable
//Ports auslesen.
$port1 = snmpget("$host","$community",".1.3.6.1.2.1.2.2.1.8.101"); // 1 = Online, 2 = Offline
$port1 = str_replace("INTEGER: ", "", $port1);
switch($port1)
{
case "1":
SetValueString(43573 /*[Netzwerk\Port 1]*/, "Up");
break;
case "2":
SetValueString(43573 /*[Netzwerk\Port 1]*/, "Down");
break;
}
$port2 = snmpget("$host","$community",".1.3.6.1.2.1.2.2.1.8.102"); // 1 = Online, 2 = Offline
$port2 = str_replace("INTEGER: ", "", $port1);
switch($port2)
{
case "1":
SetValueString(57591 /*[Netzwerk\Port 2]*/, "Up");
break;
case "2":
SetValueString(57591 /*[Netzwerk\Port 2]*/, "Down");
break;
}
$port3 = snmpget("$host","$community",".1.3.6.1.2.1.2.2.1.8.103"); // 1 = Online, 2 = Offline
$port3 = str_replace("INTEGER: ", "", $port3);
switch($port3)
{
case "1":
SetValueString(10977 /*[Netzwerk\Port 3]*/, "Up");
break;
case "2":
SetValueString(10977 /*[Netzwerk\Port 3]*/, "Down");
break;
}
$port4 = snmpget("$host","$community",".1.3.6.1.2.1.2.2.1.8.104"); // 1 = Online, 2 = Offline
$port4 = str_replace("INTEGER: ", "", $port4);
switch($port4)
{
case "1":
SetValueString(52837 /*[Netzwerk\Port 4]*/, "Up");
break;
case "2":
SetValueString(52837 /*[Netzwerk\Port 4]*/, "Down");
break;
}
?>