Status Script für Serverdienste
Hier ein einfaches Beispiel für ein, mehr oder weniger, simples Statusscript.
Die Ausgabe kann natürlich recht vielseitig mit einfachem HTML/CSS aufgemöbelt werden.
Teil 1: Einfache Dienste abfragen
<?php
/*
Script: Simple Status
Author: itsjustm3
Site: itsjustm3.de
*/
// Timeout angeben
$timeout = "1";
// Die zu prüfenden Dienste
// Wird keine IP angegeben ist der Fallback "localhost"
$port[1] = "80"; $service[1] = "Apache Webserver"; $ip[1] ="";
$port[2] = "21"; $service[2] = "FTP Deamon"; $ip[2] ="";
$port[3] = "3306"; $service[3] = "MYSQL Server"; $ip[3] ="";
$port[4] = "22"; $service[4] = "Secure Shell Deamon"; $ip[4] ="";
$port[5] = "10000"; $service[5] = "Webmin Panel Daemon"; $ip[5] ="";
$port[6] = "80"; $service[6] = "Internet Connection"; $ip[6] ="google.de";
// Aufbau des Arrays
$ports = count($port);
$ports = $ports + 1;
$count = 1;
// Ein einfacher DIV für die Ausgabe
$data .= "<div>";
while($count < $ports){
if($ip[$count]==""){
$ip[$count] = "localhost";
}
$fp = @fsockopen("$ip[$count]", $port[$count], $errno, $errstr, $timeout);
if (!$fp) {
$data .= "<span>$service[$count]</span><span style='color:red'>Offline</span>";
} else {
$data .= "<span>$service[$count]</span><span style='color:green'>Online</span>";
}
$count++;
}
// DIV schließen und Ausgabe
$data .= "</div>";
echo $data;
?>
Teil 2: Load AVG und Uptime anzeigen
<?php
/*
Script: Simple Diag
Author: itsjustm3
Site: itsjustm3.de
*/
// Einfacher DIV für die Ausgabe
$data1 .= "<div>";
// Per exec wird das LOAD ermittelt und via preg_match in eine lesbare Kurzversion umwandeln
// Das LOAD (1min,5min,15min) kann über $avgs[1-3] angesprochen werden
$loadresult = @exec('uptime');
preg_match("/averages?: ([0-9.]+),[s]+([0-9.]+),[s]+([0-9.]+)/",$loadresult,$avgs);
// Uptime auslesen
$uptime = explode(' up ', $loadresult);
$uptime = explode(',', $uptime[1]);
$uptime = $uptime[0].', '.$uptime[1];
// Alles zusammen bauen und Ausgabe erzeugen
$data1 .= "<span>Server Load Averages </span><span style='color:green'>$avgs[1], $avgs[2], $avgs[3]</span>n";
$data1 .= "<span>Server Uptime </span><span style='color:green'>$uptime</span>";
$data1 .= "</div>";
echo $data1;
?>
Teil 3: Aktive Sessions anzeigen
<?php
/*
Script: Simple Logon
Author: itsjustm3
Site: itsjustm3.de
*/
// Wieder der einfache DIV Container
$data2 .= "<div>";
// Abfrage erfolg per "who" Befehl
// Natürlich kann man hier auch z.B. mit "last -n" arbeiten
$output1 = shell_exec( "who --ips" );
// Ausgabe ist mit "pre" formatiert da es sich um Plaintext aus der Console handelt
$data2 .= "<pre>$output1</pre>n";
$data2 .= "</div>";
echo $data2;
?>
Das ganze kann natürlich auch als ein einziges PHP-Script zusammengesetzt werden. Die Vorgaben dafür (data,data1,data2) sind ja bereits enthalten. Wenn man den DIV's noch CSS-Klassen zuordnet steht dem persönlichen Design nichts mehr im Weg. Für die einfache Verwendung im Alltag sollte es allemal ausreichend sein. ![]()
Bei gewerblichen Produktivumgebungen sollte auf jeden Fall darauf geachtet werden dass nicht jedes Script direkt alles auslesen darf.


