Ping output in DB
Hallo zusammen,
da ich bei mir zuhause immer wieder Verbindungsabbrüche meines DSL Anschlusses habe, hatte ich mir vor geraumer Zeit gedacht per Raspberry alle 15 Minuten einen Speedtest und alle 10 Sekunden einen einzelnen Ping abzusetzen und den Output davon dann in jeweils eigene Logfiles zu schreiben.
Das ganze hat auch alles ganz gut funktioniert bis zu dem Punkt an dem man dann die Daten einigermaßen Ordentlich auswerten will.
Das erste Problem ist mein Ping welche alle 10 Sekunden eine Zeile in das Logfile schreibt.
Das zweite Problem wäre dann der Speedtest welches ich dann bestimmt selber hin bekomme wenn ich einen guten Ansatz für das erste Problem habe.
Das ganze sieht dann in etwa so aus:
2019-02-12 14:00:11 Ping: 15.591 ms
2019-02-12 14:00:21 Ping: 0.774 ms
2019-02-12 14:00:42 Ping: FAIL
2019-02-12 14:00:52 Ping: 0.773 ms
2019-02-12 14:01:01 Ping: 0.782 ms
Wobei ein alle 15 Minuten, also 14:00, 14:15, 14:30, 14:45 usw. der Speedtest den Ping etwas in die höhe treibt.
Fehlgeschlagene Pings lasse ich mir als FAIL eintragen.
das Script welches ich minütlich per cron ausführe sieht so aus:
#!/bin/sh
pingi=$(ping -qc1 google.com 2>&1 | awk -F'/' 'END{ print (/^rtt/? "Ping: "$5" ms":"Ping: FAIL") }')
d=$(date +%Y-%m-%d)
t=$(date +%H:%M:%S)
echo $d $t $pingi >> /var/log/ping.log
sleep 10
Hierbei steht der komplette block 6x untereinander im Script sodass ich alle 10 Sekunden einen Eintrag bekomme.
Ich habe mir nun auf meiner DiskStation eine mariaDB in der Version 10 aufgesetzt.
Einen passenden User angelegt welcher auch von anderen Hosts außer localhost auf die DB zugreifen darf.
Eine Tabelle angelegt welche die Spalten Timestamp (Autoincrement und primary key), Attribute (für Ping, Upload oder Download) sowie Value (für den Output) enthält.
Ich kann mich Remote von meinem Raspberry mit der DB verbinden und Werte in die Tabelle schreiben.
Wenn ich das ganze aus dem Script heraus versuche, dann bekomme ich jedoch Syntaxfehler, obwohl die Syntax im Script genau die selbe ist wie ich es auf der Shell ausführe.
Gibt es irgendwelche Restriktionen bezüglich mariaDB und Variablen?
Hab ihr Verbesserungsvorschläge für das Script (while-do mit schleifenzähler)?
Gibt es manchmal ähnliche Projekte an denen ich mich orientieren könnte?
danke und Gruß
neotron
da ich bei mir zuhause immer wieder Verbindungsabbrüche meines DSL Anschlusses habe, hatte ich mir vor geraumer Zeit gedacht per Raspberry alle 15 Minuten einen Speedtest und alle 10 Sekunden einen einzelnen Ping abzusetzen und den Output davon dann in jeweils eigene Logfiles zu schreiben.
Das ganze hat auch alles ganz gut funktioniert bis zu dem Punkt an dem man dann die Daten einigermaßen Ordentlich auswerten will.
Das erste Problem ist mein Ping welche alle 10 Sekunden eine Zeile in das Logfile schreibt.
Das zweite Problem wäre dann der Speedtest welches ich dann bestimmt selber hin bekomme wenn ich einen guten Ansatz für das erste Problem habe.
Das ganze sieht dann in etwa so aus:
2019-02-12 14:00:11 Ping: 15.591 ms
2019-02-12 14:00:21 Ping: 0.774 ms
2019-02-12 14:00:42 Ping: FAIL
2019-02-12 14:00:52 Ping: 0.773 ms
2019-02-12 14:01:01 Ping: 0.782 ms
Wobei ein alle 15 Minuten, also 14:00, 14:15, 14:30, 14:45 usw. der Speedtest den Ping etwas in die höhe treibt.
Fehlgeschlagene Pings lasse ich mir als FAIL eintragen.
das Script welches ich minütlich per cron ausführe sieht so aus:
#!/bin/sh
pingi=$(ping -qc1 google.com 2>&1 | awk -F'/' 'END{ print (/^rtt/? "Ping: "$5" ms":"Ping: FAIL") }')
d=$(date +%Y-%m-%d)
t=$(date +%H:%M:%S)
echo $d $t $pingi >> /var/log/ping.log
sleep 10
Hierbei steht der komplette block 6x untereinander im Script sodass ich alle 10 Sekunden einen Eintrag bekomme.
Ich habe mir nun auf meiner DiskStation eine mariaDB in der Version 10 aufgesetzt.
Einen passenden User angelegt welcher auch von anderen Hosts außer localhost auf die DB zugreifen darf.
Eine Tabelle angelegt welche die Spalten Timestamp (Autoincrement und primary key), Attribute (für Ping, Upload oder Download) sowie Value (für den Output) enthält.
Ich kann mich Remote von meinem Raspberry mit der DB verbinden und Werte in die Tabelle schreiben.
Wenn ich das ganze aus dem Script heraus versuche, dann bekomme ich jedoch Syntaxfehler, obwohl die Syntax im Script genau die selbe ist wie ich es auf der Shell ausführe.
Gibt es irgendwelche Restriktionen bezüglich mariaDB und Variablen?
Hab ihr Verbesserungsvorschläge für das Script (while-do mit schleifenzähler)?
Gibt es manchmal ähnliche Projekte an denen ich mich orientieren könnte?
danke und Gruß
neotron
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 416627
Url: https://administrator.de/contentid/416627
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
1 Kommentar