Hallo zusammen,
da ich mehrer Geräte im Netzwerk habe, welche SNMP unterstützen, frage ich diese natürlich auch mit IPS ab.
Als erstes kopiert man sich die php_snmp.dll in das IPS Verzeichniss.
Danach trage ich immer noch in der php.ini die Extension ein:
extension = "php_snmp.dll"
Und nun mein Script am Beispiel einer USV von APC.
Dieses Script führe ich alle 5 Minuten aus.
<?
$host = "192.168.0.253";
$community = "public";
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.2.1.1.0"); //Batterie Status unknown(1),batteryNormal(2),batteryLow(3)
switch($data)
{
case "1":
SetValue(18144 /*[Homecontrol\Keller\Serverraum\USV\Batterie Status]*/ , "Unbekannt");
break;
case "2":
SetValue(18144 /*[Homecontrol\Keller\Serverraum\USV\Batterie Status]*/ , "Normal");
break;
case "3":
SetValue(18144 /*[Homecontrol\Keller\Serverraum\USV\Batterie Status]*/ , "Leer");
break;
}
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.2.2.1.0"); //Batterie Kapazität (in %)
$data = str_replace("Gauge32: ", "", $data);
SetValue(40275 /*[Homecontrol\Keller\Serverraum\USV\Batterie Kapazität]*/ , $data." %");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.2.2.4.0"); //Batterie tauschen noBatteryNeedsReplacing(1),batteryNeedsReplacing(2)
switch($data)
{
case "1":
SetValue(26685 /*[Homecontrol\Keller\Serverraum\USV\Batterie tauschen]*/ , "Nein - Batterie OK");
break;
case "2":
SetValue(26685 /*[Homecontrol\Keller\Serverraum\USV\Batterie tauschen]*/ , "Ja - Bitte Batterie tauschen");
break;
}
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.2.2.2.0"); //Batterie Temperatur (in °C)
$data = str_replace("Gauge32: ", "", $data);
SetValue(57938 /*[Homecontrol\Keller\Serverraum\USV\Batterie Temperatur]*/ , $data." °C");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.4.2.1.0"); //Spannung am Ausgang (in Volt)
$data = str_replace("Gauge32: ", "", $data);
SetValue(57607 /*[Homecontrol\Keller\Serverraum\USV\Spannung am Ausgang]*/ , $data." V");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.3.2.1.0"); //Spannung am Eingang (in Volt)
$data = str_replace("Gauge32: ", "", $data);
SetValue(32211 /*[Homecontrol\Keller\Serverraum\USV\Spannung am Eingang]*/ , $data." V");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.4.2.3.0"); //Auslastung (in %)
$data = str_replace("Gauge32: ", "", $data);
SetValue(52663 /*[Homecontrol\Keller\Serverraum\USV\Auslastung]*/ , $data." %");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.2.2.3.0"); //Batterielaufzeit bei Stromausfall
$pos1 = (strpos($data, '(')+1);
$pos2 = strpos($data, ')')-$pos1;
$data = ((substr($data, $pos1, $pos2)/60)/100);
SetValue(52551 /*[Homecontrol\Keller\Serverraum\USV\Batterielaufzeit bei Stromausfall]*/ , $data." Minuten");
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.4.1.1.0"); //APC Status ( liefert Wert von 1 bis 12 zurück )
switch($data)
{
case "1":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Unbekannt");
break;
case "2":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "On Line");
break;
case "3":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Batterie Betrieb");
break;
case "4":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "on Smart Boost");
break;
case "5":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Timed Sleeping");
break;
case "6":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Software Bypass");
break;
case "7":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Aus");
break;
case "8":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Neustart");
break;
case "9":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Switched Bypass");
break;
case "10":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Hardware Failure Bypass");
break;
case "11":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "Sleeping Until Power Returns");
break;
case "12":
SetValue(54468 /*[Homecontrol\Keller\Serverraum\USV\Status]*/ , "On Smart Trim");
break;
}
/*
1 = Unknown
2 = On Line
3 = On Battery
4 = On Smart Boost
5 = Timed Sleeping
6 = Software Bypass
7 = Off
8 = Rebooting
9 = Switched Bypass
10 = Hardware Failure Bypass
11 = Sleeping Until Power Returns
12 = On Smart Trim
*/
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.3.2.5.0"); //Grund fuer Umschalten auf Batteriebetrieb
switch($data)
{
case "1":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Kein Ereigniss");
break;
case "2":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "zu hohe Eingangsspannung");
break;
case "3":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Spannungsabfall");
break;
case "4":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Stromausfall(keine Eingangsspannung)");
break;
case "5":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Geringer temporärer Leistungsabfall");
break;
case "6":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Großer temporärer Leistungsabfall");
break;
case "7":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "kleine Spannungsspitze");
break;
case "8":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "große Spannungsspitze");
break;
case "9":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "USV Selbsttest");
break;
case "10":
SetValue(11564 /*[Homecontrol\Keller\Serverraum\USV\Grund fuer Umschalten auf Batteriebetrieb]*/ , "Ausgleichen von Spannungsschwankungen");
break;
}
$data = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.4.2.2.0"); //Frequenz Ausgangsspannung
$data = str_replace("Gauge32: ", "", $data);
SetValue(29664 /*[Homecontrol\Keller\Serverraum\USV\Frequenz Ausgangsspannung]*/ , $data." Hz");
$data1 = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.7.2.4.0"); //Datum des letzten Selbstests
$data2 = snmpget("$host","$community",".1.3.6.1.4.1.318.1.1.1.7.2.3.0"); //Ergebniss des letzten Selbstests
switch($data2)
{
case "1":
$data2 = "Erfolgreich";
break;
case "2":
$data2 = "Fehler";
break;
case "4":
$data2 = "in Bearbeitung";
break;
case "3":
$data2 = "Unbekannt";
break;
}
SetValue(54905 /*[Homecontrol\Keller\Serverraum\USV\letzter Selbsttest]*/ , $data1." ".$data2);
?>
Gruss
Michael
php_snmp.zip (106 KB)