it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script
Differences
This shows you the differences between two versions of the page.
it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script [2022-08-31 12:30] – created - external edit 127.0.0.1 | it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script [2023-01-21 14:49] (current) – removed axel.werner.1973@gmail.com | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======Probleme mit der Internetverbindung automatisch protokollieren mit dem kabelbw-isp-logger.sh script====== | ||
- | |||
- | Ich bin seit April 2009 Kunde bei KabelBW und habe immer wieder MASSIVE Probleme mit meiner Internetverbindung. Zum Teil habe ich mal einige Stunden ruhe, aber dann gibt es auch wieder ganze Tage oder Wochenenden an denen meine Verbindung alle 2-5 Minuten für min 60 Sekunden oder gar mehrere Minuten zusammenbricht. Währen dieser Zeit ist auch kein telefonieren möglich, da KabelBW auf VoIP setzt. d.H. verliert mein Kabelmodem die Verbindung zum ISP sind immer mein Internet sowie meine Telefonleitung weg! | ||
- | |||
- | Nach einem extremen Wochenende in 2009 mit unzähligen massiven Ausfällen habe ich das protokollieren per Hand eingestellt und statt dessen dieses kleine shell Script entwickelt, mit dessen Hilfe eine beliebige Internetverbindung permanent rund um die Uhr überprüft und sämtliche Ausfälle protokolliert werden. | ||
- | |||
- | Es ist sehr einfach gestrickt. Ich prüfe einfach nur per Ping eine kleine Liste unterschiedlicher Hosts im Internet ab. Genauer DREI Hosts bei Kabel BW selbst. Warum? Ganz einfach, weil zumindest diese KabelBW Hosts bei einer stabilen Internet-Verbindung aus Sicht des Kunden praktisch IMMER online d.h. erreichbar sein müssten. Sind nun mind. drei Hosts gleichzeitig nicht erreichbar, so muss ein Problem mit der Internet Verbindung zum ISP vorliegen, da es sehr unwahrscheinlich ist, dass Zeitgleich DREI wichtige Hosts des ISPs ausfallen. | ||
- | |||
- | Es werden in einem Logfile die Vorkommnisse mit Datum und Uhrzeit, sowie mit der Dauer des Ausfalls (bzw der vorherigen Uptime), protokolliert. | ||
- | |||
- | Da ich das Script nur "bei Bedarf" | ||
- | |||
- | Hier die aktuellste Version des Scriptes: | ||
- | |||
- | <code bash kabelbw-isp-logger.sh> | ||
- | #!/bin/bash | ||
- | # | ||
- | # KabelBW Internet Ausfall Protokollierer V 2.0 (2013-05-17) | ||
- | # by Axel Werner [mail@awerner.myhome-server.de] | ||
- | # | ||
- | # | ||
- | # | ||
- | # History: | ||
- | # | ||
- | # | ||
- | # and does not log every bad linktest anymore. Also added more | ||
- | # Hosts so there is a better fault tolerance if one host may | ||
- | # be not alive at some time. But its pretty rare that all three | ||
- | # Hosts are dead at the same time. So if all three are dead, | ||
- | # there must be a problem with the internet link to the ISP. | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # the Sampling, not at the End. Since Pings can take some | ||
- | # Time on failing hosts the Date in the logs is often too | ||
- | # late. so in logs it seems the interupted link was only | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # User Config goes here | ||
- | logfile=/ | ||
- | pingIntervall=5 | ||
- | hostsToTest=" | ||
- | |||
- | |||
- | |||
- | |||
- | # Defining bash functions..." | ||
- | now() { | ||
- | date '+%F %T' | ||
- | } | ||
- | |||
- | unixTime() { | ||
- | date ' | ||
- | } | ||
- | |||
- | |||
- | getIp() { | ||
- | # function requires ONE PLAIN IP ADDRESS OR HOSTNAME for argument | ||
- | # it then tests if its an ip adress or a hostname and " | ||
- | # the IP address. If a hostname was given it resolves for the ip | ||
- | # and prints the ip instead. | ||
- | ipAddr=`dig +short " | ||
- | # dig +short returns empty string if argument was plain ip adress | ||
- | if [ -z " | ||
- | echo " | ||
- | else | ||
- | echo " | ||
- | fi | ||
- | } | ||
- | |||
- | pinger() { | ||
- | # function requires ONE PLAIN IP ADDRESS + FQDN/ | ||
- | echo " | ||
- | hostIp=" | ||
- | hostName=" | ||
- | |||
- | pingStartTime=`now` | ||
- | |||
- | TIMEOUT=2 | ||
- | |||
- | if ping -c1 -W " | ||
- | return 0 | ||
- | else | ||
- | SCORE=`expr $SCORE + 1` | ||
- | echo " | ||
- | return 666 | ||
- | fi | ||
- | } | ||
- | |||
- | |||
- | |||
- | |||
- | echo "$0 started on: `now` , writing log to: $logfile" | ||
- | |||
- | # load pc speaker kernel driver module if not loaded by default | ||
- | modprobe pcspkr | ||
- | |||
- | # set default state | ||
- | LINK=" | ||
- | |||
- | # reseting up/ | ||
- | wentDownTimeSecs=`unixTime` | ||
- | wentUpTimeSecs=`unixTime` | ||
- | upTime=0; | ||
- | |||
- | tmpFailedHosts=`mktemp` | ||
- | |||
- | |||
- | #while loop | ||
- | while true ; do | ||
- | |||
- | # reseting score | ||
- | SCORE=0 | ||
- | |||
- | # reseting/ | ||
- | echo > $tmpFailedHosts | ||
- | |||
- | |||
- | # test all Hosts listed in $hostsToTest | ||
- | for H in $hostsToTest; | ||
- | pinger `getIp $H` $H | ||
- | done | ||
- | |||
- | if [ " | ||
- | LINK=" | ||
- | wentDownTimeSecs=`unixTime` | ||
- | upTime=`expr $wentDownTimeSecs - $wentUpTimeSecs` | ||
- | echo "KABEL BW LINK DOWN at `now`. No remote Host were reachable. Last UPTIME WAS: $upTime sec." | tee -a " | ||
- | cat " | ||
- | beep -f 2000 -n -f 1500 -n -f 1000 | ||
- | |||
- | elif [ " | ||
- | LINK=" | ||
- | wentUpTimeSecs=`unixTime` | ||
- | downTime=`expr $wentUpTimeSecs - $wentDownTimeSecs` | ||
- | echo "KABEL BW LINK UP AGAIN at `now`. DOWNTIME: $downTime sec. All remote Host are reachable. " | tee -a " | ||
- | beep -f 1000 -n -f 1500 -n -f 2000 | ||
- | elif [ " | ||
- | # just audio feedback via pc speaker that link is still down | ||
- | beep -l 200 -f 300 -n -l 400 -f 260 | ||
- | fi | ||
- | |||
- | sleep " | ||
- | done | ||
- | |||
- | exit | ||
- | |||
- | </ | ||
- | |||
- | --- // | ||
- | |||
- | |||
- | ===== Nachtrag 15.12.2010 ===== | ||
- | Bin kürzlich in einen anderen Stadtteil umgezogen, werde aber noch immer über KabelBW mit Internet und Telefonie versorgt (ging nicht anders, dank deren Knebelverträge). ABER... ich muss sagen, seit dem Umzug (bei dem ich übrigens ein neues/ | ||
- | |||
- | --- // | ||
- | |||
- | |||
- | ===== Nachtrag 17.05.2013 ===== | ||
- | So nun habe ich auch in der neuen Wohnung im neuen Stadtteil wieder massive Probleme mit dem KabelBW Internet+Telefon. Habe dazu mein altes Script noch mal überarbeitet und gestartet um ein aktuelles Protokoll zu erhalten. Es sieht so aus als würde alle 5-10 Minuten die FritzBox von KabelBW automatisch einen reboot machen. Das dauert dann meist knapp 2 Minuten bis eine Internet-Verbindung wiederhergestellt werden konnte. Morgen werde ich das entstandene Protokoll an KabelBW einsenden. | ||
- | |||
- | --- // | ||
- | |||
- | |||
- | {{tag> | ||
it-artikel/linux/probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script.1661949019.txt.gz · Last modified: 2022-08-31 12:30 by 127.0.0.1