statusscript 18-06-18/21:18

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.

Beispiel der Scripte (bereits mit CSS):

  

 

 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.