Die Idee:
Ich schaue ab und zu mal nach meinen BPIs wie lange diese schon an sind. Da kam mir gestern die Idee, das könnte ich doch auch hier im Blog in einem Modul anzeigen.
Die Findungsphase: ;)
Wie realisiert man das? Eine Stunde grübeln und es ging los. Das wichtigste ist, meine BPIs sind von außen nicht erreichbar, also mussten die Daten von den BPIs auf den Webspace. Also, musste ich mit uptime die Zeit auslesen und das dann versenden in Richtung des Blogs. Kurze Suche was ich brauchte und das ist bei raus gekommen.
Uptime und ncftp sollten das Problem lösen.
Die Lösung:
Grob das Konzept. Mit uptime die Zeit auslesen, in ein File speichern. Das File dann mittels FTP auf den Webhost schreiben und dann dort weiter verarbeiten.
Hier nun das Script:
#!/bin/sh # Script um die Uptime der BPIs, mittels FTP, auf meinen Webspace zu bekommen. # Dafür muss es einen eigenen FTP-Benutzer geben! # Variablen deklarieren HOST='google.de' USER='User' PASSWD='password' FILE='uptime.txt' #uptime auslesen und in Datei schreiben uptime > uptime.txt #FTP-Routine
# / = Zielverzeichnis also Root # /uptime2.txt also aus dem Rootverzeichnis
ncftpput -u User -p password google.de / /uptime.txt
Das Script macht jetzt nichts anderes als die Uptime auszulesen, in ein File schreiben und dann im nächsten Schritt das File per FTP auf den Webspace schreiben.
Wichtig! Benutzt nicht den normalen FTP-User für diesen Vorgang. Benutzt einen FTP-User, der NUR Zugriff auf ein Verzeichnis hat. Das Passwort bei FTP wird im Klartext versendet, also besteht die Gefahr das es einer mit liest.
Auf Dinge wie Script ausführbar machen und mittels cronjob ausführen gehe ich hier jetzt mal nicht näher ein.
So, nun geht es daran, das in die Webseite einzubauen. Dazu ein PHP-Script, was mir die Daten erst mal ein wenig aufbereitet.
uptime.php
<?php//Date uptime.txt einlesen
// 09:44:57 up 1:10, 2 users, load average: 0,37, 1,28, 1,57//Medienserver
$datei = implode(",",file("./uptime.txt"));//FTP-Server
$datei1 = implode(",",file("./uptime1.txt"));//IP-Fire
$datei2 = implode(",",file("./uptime2.txt"));// String in Teilbereiche zerlegen
$zerlegen = explode(",", $datei);
$zerlegen1 = explode(",", $datei1);
$zerlegen5 = explode(",", $datei2);//Teilstring [0] = 09:44:57 up 1:10 zerlegen
//Ergebnis: [1]=Uhrzeit [2]=up [3]=Anzahl der Tage [4]=days
$zerlegen2 = explode(" ", $zerlegen[0]);
$zerlegen3 = explode(" ", $zerlegen1[0]);
$zerlegen4 = explode(" ", $zerlegen5[0]);echo "<b>BananaPI Nr.1 UpTime:</b><br>";
echo "<b>$zerlegen2[1]</b> <b>$zerlegen2[3]</b> <b>$zerlegen2[4]</b></b><br><br>";echo "<b>BananaPI Nr.2 UpTime:</b><br>";
echo "<b>$zerlegen3[1]</b> <b>$zerlegen3[3]</b> <b>$zerlegen3[4]</b><br><br>";echo "<b>IPFire UpTime:</b><br>";
echo "<b>$zerlegen4[1]</b> <b>$zerlegen4[3]</b> <b>$zerlegen4[4]</b></b>";
?>
Das ganze wird dann mittels eines IFrame in einem Modul angezeigt. Fertig!
Das Ergebnis:
Modul Uptime BPIs
Wer Verbesserungen findet kann das gerne in den Kommentaren hinterlassen. Ich freue mich über jedes Feedback.