<?php
function ip2link($str) {
$arS[]='0.0.0.0';
$arR[]='<span title="(0˙0˙0˙0) - Alle IPv4-Adressen">ALL_IP4</span> ';
$arS[]='127.0.0.1';
$arR[]='<span title="(127˙0˙0˙1) - Localhost, IPv4">LOCALHOST</span> ';
$arS[]=':::';
$arR[]='<span title="(:::) - Alle IPv6-Adressen">IP6</span>:';
$arS[]='::1:';
$arR[]='<span title="(::1) - Localhost, IPv6">LOC6</span>:';
$str=str_replace($arS, $arR, $str);
$pattern='/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/';
$replace='<a href="http://www.fastix.org/netztools/?addr=$1&action=whois">$1</a>';
return preg_replace($pattern, $replace, $str);
}
function tabs_to_table($str) {
$str=str_replace("\t", ' ', trim($str));
$pattern='/ +/';
$replace="\t";
$str=preg_replace($pattern, $replace, $str);
$ret='<table>';
foreach (explode("\n", $str) as $row) {
$arItems=explode("\t", trim($row));
$row=implode('</td><td>', $arItems);
$ret.='<tr><td>'.$row.'</td></tr>';
}
$ret.='</table>';
return $ret;
}
function sys_uptimes() {
$arUptimes=explode(' ', trim(file_get_contents('/proc/uptime')));
$a['prozessors']=trim(`grep processor /proc/cpuinfo |wc -l`);
$s=$arUptimes[0];
$a['days']=floor($s/(60*60*24));
$s=$s-$a['days']*60*60*24;
$a['hours']=floor($s/(60*60));
$s=$s-$a['hours']*60*60;
$a['minuts']=floor($s/(60));
$s=$s-$a['minuts']*60;
$a['seconds']=floor($s);
$a['syslast']=1-( $arUptimes[1] / $a['prozessors']) / $arUptimes[0];
return $a;
}
function sys_mem_table() {
$table='<table>
<tr>
<th> </th>
<th>Gesamt:</th>
<th>Benutzt:</th>
<th>Frei:</th>
<th>Shared:</th>
<th>Puffer:</th>
<th>Cached:</th>
</tr>';
$data=`/usr/bin/free -m | /bin/grep Mem &2>1`;
$data=trim(preg_replace('/[^0-9 \n]/', '', $data));
$data=preg_replace('/ {2,}/', ' ', $data);
$data=preg_replace('/\t/', ' ', $data);
$table .= ' <tr>
<th>RAM:</th>
<td>' . str_replace(' ', ' MB</td><td>', $data) . 'MB</td>
</tr>';
$data=`/usr/bin/free -m | /bin/grep -E Swap &2>1`;
$data=trim(preg_replace('/[^0-9 \n]/', '', $data));
$data=preg_replace('/ {2,}/', ' ', $data);
$data=preg_replace('/\t/', ' ', $data);
$table .= '<tr><th>Swap:</th><td>' . str_replace(' ', ' MB</td><td>', $data) . 'MB</td></tr>';
$table.='</table>';
#echo $table;
return $table;
}
function getUnixHostname() {
$ar=file('/etc/hostname');
$hostname=false;
$row=0;
while (! $hostname) {
$s=trim($ar[$row]);
if ($s && $s{0} != '#') {
$hostname=$s;
}
$row++;
}
$ar=explode('.', $hostname);
return $ar[0];
}
header("Content-Type: text/html; charset=UTF-8");
?><!doctype html>
<html><head><title><?php echo getUnixHostname(); ?> - Server-Zustand</title><meta http-equiv="refresh" content="60"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><style type="text/css">html,body {margin:0;padding:0;background-color:#fafafa;}h1{margin-top:0;padding:.3em .5em .3em .5em;background-color:#ddd;border-bottom: 3px solid black;}#content {padding:0 1em 0 1em;}table{background-color:#ddd;font-size:.8em; margin-bottom:1em;}table tr{background-color:#fafafa;}table tr:hover{background-color:#cfc;}th,td {padding:.3em; min-width:8em;}th {padding-right:1em;text-align:left;}th,td.str{text-align:left;}td,th.int,th.dec{text-align:right;}tr.aktiv td {background-color:#ffc;}.buttonleiste {font-size:1em;}#start_ping_button,#stop_ping_button,#reset_button,#cache_button {display:inline-block;font-size:.8em;width:10em;border:none;border-radius:1em;padding:.5em 1em .5em 1em;box-shadow:2px 2px 2px gray;margin:0;vertical-align:middle;text-align:center;cursor:pointer;}#cache_button {background-color:#ffc;}.download {margin-top:2em;padding-top:1em;border-top:1px solid black;}</style></head><body><h1>Dieser Webserver funktioniert!</h1><div id="content"><h2>Systemüberblick:</h2>
<?php
$a=sys_uptimes();
print "<p>". htmlspecialchars(`lsb_release -d | sed "s/Description://"`) ." auf " . $a['prozessors'] . " Prozessoren läuft seit " . $a['days'] . " Tagen, " . $a['hours'] . " Stunden und " . $a['minuts'] . " Minuten.<br />
Durchschnittliche Systemauslastung seit letztem Start: " . round($a['syslast']*100 , 2) . "%</p>";
echo
'<p>Kernel: ' , htmlspecialchars(`uname -ri`) , '</p>' , sys_mem_table("", "meminfo"),
'<h2>Plattenauslastung:</h2>', tabs_to_table(str_replace('Mounted on', 'Mounted_on', `df -h`)),
'<h2>Aktuelle Prozessorlast:</h2><pre>', `top -b -n1|grep -n15`, '</pre>',
'<h2>Offene (Standard-) Ports:</h2><p><a href="http://www.fastix.org/netztools/?addr=home.fastix.org&action=nmap">von außen testen</a></p>',
'<h2>Erreichbarkeit:</h2><p><a href="http://www.fastix.org/netztools/?addr=home.fastix.org&action=ping">von außen testen</a></p>',
'<h2>TCP-Verbindungen:</h2>', tabs_to_table((`netstat -an | grep "tcp"`));
?></div></body></html>
Als uptime.php anglegen und abrufen während parallel die pikwik seite abgerufen wird.
Jörg Reinholz