Dauer Speedtest mit dem PI
Ziel ist es eine Stündliche Übersicht über die eigene aktuelle Bandbreite zu bekommen.
Dazu wird benötigt:
- Ein Raspberry PI (Ich empfehle mindestens die Version 2 da eine gewisse Leistung benötigt wird und das Ergebnis ansonsten verfälscht werden könnte)
- 1 SD-Karte min. 8GB
- Netzteil sowie Microusb-Kabel
- Netzwerkkabel
Zuerst muss die SD-Karte mit dem aktuellen Raspbian bespielt werden.
Danach können dann die Benutzereigenen Einstellungen (z.B. feste IP-Adresse) getroffen werden.
Ist das geschehen sollte der Raspberry mit „apt-get update“ und „apt-get upgrade“ auf einen aktuellen Stand gebracht werden.
Als nächstes müssen die benötigten Softwarekomponenten installiert werden.
Dies geschieht mittels:
sudo apt-get install apache2 php5 mysql-server mysql-client php5-mysql python-pip sudo pip install speedtest-cli
ACHTUNG: Das Passwort für Mysql bitte unbedingt notieren!
Jetzt sollte es möglich sein mittels dem Befehl „speedtest-cli“ manuell einen Speedtest aus zu lösen.
Nun wird eine Datenbank und eine Tabelle für den Speedtest angelegt:
echo "create database speed;" |mysql -uroot -p"IHR PASSWORT"; echo "CREATE TABLE stest ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, j VARCHAR(30) NOT NULL, m VARCHAR(30) NOT NULL, t VARCHAR(30) NOT NULL, s VARCHAR(30) NOT NULL, mi VARCHAR(30) NOT NULL, down VARCHAR(30) NOT NULL, up VARCHAR(30) NOT NULL, ping VARCHAR(30) NOT NULL, reg_date TIMESTAMP );" |mysql -uroot -p"IHR PASSWORT" speed;
Als nächstes benötigen wir ein Script das uns die ermittelten Daten auswertet und in die Datenbank schreibt:
( /local/speedtest/stest.sh)
j=`date +%Y` m=`date +%m` t=`date +%d` s=`date +%H` mi=`date +%M` /usr/local/bin/speedtest-cli > /local/speedtest/erg.log 2>&1 cat /local/speedtest/erg.log |grep Download:| awk '{print $2}' >/local/speedtest/down cat /local/speedtest/erg.log |grep Upload:| awk '{print $2}' >/local/speedtest/up cat /local/speedtest/erg.log |grep ms| awk 'NF && NF-1 { print ( $(NF-1) ) }' >/local/speedtest/pin dow=`cat /local/speedtest/down` up=`cat /local/speedtest/up` pi=`cat /local/speedtest/pin` echo "INSERT INTO stest (j,m,t,s,mi,down,up,ping) VALUES ('$j', '$m', '$t', '$s', '$mi', '$dow', '$up', '$pi');" |mysql -uroot -p"IHR PASSWORT" speed;
Das Script wird im Anschluss mittels „chmod 777 /local/speedtest/stest.sh“ ausführbar gemacht.
Zum Schluss wird dann noch ein Crontab angelegt der Das Script immer zur vollen Stunde ausführt.
„crontab -e“
0 * * * * /local/speedtest/stest.sh > /dev/null 2>&1
In der Datenbank wird nun jede Stunde das Ergebnis des Speedtest abgelegt und kann von dort aus weiter verarbeitet werden.
Eine Ausgabe der Tabelle mittels:
echo "select * from stest;" |mysql -uroot -p"IHR PASSWORT" speed;
Sieht dann in etwa so aus:
id j m t s mi down up ping reg_date 1 2018 05 23 11 03 93.19 6.00 17.402 2018-05-23 10:03:32 2 2018 05 23 12 05 93.19 6.00 17.402 2018-05-23 10:05:04