Hallo
Da mein Internet spinnt und ich nicht weiß ob das WAN oder das LAN schuld ist möchte ich gerne den Dauerping in einer Logdatei gespeichert haben.
Was ich mir da vorgestellt habe?
ping 192.168.2.1 -t setzt ja jede Sekunde einen Ping an den Gateway ab und kommt wieder zurück mit einer ms Zahl. Da mich ja nur interessiert wann das Internet nicht gut läuft möchte ich das z.b nur alles mitgeloggt wird was über 5 ms Ping hat (Denke mal das ist normal im LAN). Auch möchte ich gerne die Zeit wissen WANN das passiert ist damit ich dann die Zeiten wo das Internet rumspinnt mit den Zeiten vergleichen kann wo die ms Zahl höher als 5 ist.
Das Problem ist das ich mich mit bash noch nicht wirklich auskenne. Ich hab mal ein Automatisches Kernel Installer Script gebastelt aber das wars auch schon.
Kann man sowas mit minimalem Aufwand aufziehen oder ist das Seitenweise Bash Scripting? Hier mein Kernel Script damit man ungefähr rauslesen kann was ich am Bash Scripten schon kann. 37500
Loggen einer Ausgabe
Re: Loggen einer Ausgabe
Wuerde alle Zeilen unterdruecken, bei denen die rtt unter 165ms liegt:Man beachte die nicht-linear ansteigenden Werte im Timestamp und fuer icmp_req. Falls man gawk verwenden wuerde, koennte man sich die Schleife am Ende sparen und strftime() verwenden. Vermutlich kann man dann ebenfalls den Hack per stdbuf vermeiden (bei mawk bekommt man sonst keinen zeilenweise gepufferten Output, d.h. man sieht's nicht sofort).
Gruss Cae
Code: Alles auswählen
$ ping example.org | stdbuf -i0 -oL awk '{f=1}/bytes from/{b=$0;sub(/^.*time=/,"",b);sub(/ .*$/,"",b);if(165>b)f=0}f' | while read line; do printf '%s\t%s\n' "$(date +%F.%T)" "$line"; done
2013-12-07.03:32:42 PING example.org (93.184.216.119) 56(84) bytes of data.
2013-12-07.03:32:58 64 bytes from 93.184.216.119: icmp_req=17 ttl=51 time=171 ms
2013-12-07.03:33:02 64 bytes from 93.184.216.119: icmp_req=21 ttl=51 time=167 ms
2013-12-07.03:33:04 64 bytes from 93.184.216.119: icmp_req=23 ttl=51 time=169 ms
2013-12-07.03:33:05 64 bytes from 93.184.216.119: icmp_req=24 ttl=51 time=172 ms
...
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Loggen einer Ausgabe
Danke schon mal für den Denkanstoß
Einige Fragen hab ich jedoch noch
1. brauch ich unbedingt rtt oder geht so ein einfacher Ping auch?
2. Warum genau 165 ms? Ist das nicht viel zu viel?
3. Können die Werte auch in eine Log Datei gespeichert werden? Ich denke da an /var/log (Da sind z.b auch logs von apt usw.)
Einige Fragen hab ich jedoch noch
1. brauch ich unbedingt rtt oder geht so ein einfacher Ping auch?
2. Warum genau 165 ms? Ist das nicht viel zu viel?
3. Können die Werte auch in eine Log Datei gespeichert werden? Ich denke da an /var/log (Da sind z.b auch logs von apt usw.)
Re: Loggen einer Ausgabe
Naja, ping gibt nun mal die doppelte rtt aus, keine einfache Reisezeit, deswegen rtt (aber das ist nicht entscheidend fuer's Prinzip). 165 ms ist in meinem Beispiel der Schwellwert, weil das die Durchschnitts-rtt von hier nach example.org ist; der Jitter sorgt dafuer, dass oben ein paar Pakete ueber diesem Schwellwert liegen. Es ist genau wie example.org ein beispielhafter Wert zu Demonstration. Es steht dir natuerlich frei, den Output per >> oder tee -a oder sonstwie in ein Log umzuleiten.
Gruss Cae
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Loggen einer Ausgabe
ok mit tee funktioniert gar nichts. ich gib ein "ping www.google.at -t tee inet.txt" Ausgegeben wird leider nichts. Daher hänge ich schon in dem Schritt fest die Ausgaben mitzuloggen.
Re: Loggen einer Ausgabe
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Loggen einer Ausgabe
gibt es da kein Paket dafür? ich lese da nur raus das man Informationen kombinieren kann. Sprich man kann mit ls -l | wc -l anzeigen wie viele Dateien vorhanden sind. Hab nochmal gegoogled und den Befehl dmesg gefunden der wirklich alles mitloggt sogar mit Timestamp Funktion. Kann man mehrere Pipes auch hernehmen? Also z.b " dmesg | ping http://www.google.at -t | tee out.txt" Also das der Befehl ausgeführt wird, dmesg loggt mit und tee filtert nur die Ergebnisse die mit dem ping Befehl zu tun haben raus und speichert sie in die out.txt Datei. Sry aber ich kenn mich gerade gar nicht aus.
Edit: Lese mir gerade was mit dem Befehl cat durch
Edit2: Glaube ich bin der Lösung an der Spur. Ich versuch gerade ping www.google.at > out.txt
Edit: Lese mir gerade was mit dem Befehl cat durch
Edit2: Glaube ich bin der Lösung an der Spur. Ich versuch gerade ping www.google.at > out.txt