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.

Link to this comparison view

Next revision
Previous revision
it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script [2009-05-18 20:38]
mail@awerner.myhome-server.de angelegt
it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script [2019-05-18 14:39] (current)
mail@awerner.myhome-server.de ↷ Page moved from it-artikel:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script to it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script
Line 1: Line 1:
 ======Probleme mit der Internetverbindung automatisch protokollieren mit dem kabelbw-isp-logger.sh script====== ======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 20-30 Sekunden oder gar mehrere Minuten zusammenbricht. Währen dieser Zeit ist sogar meine ISDN Telefonleitung weg, da KabelBW ​(echt Intelligent!:​-() ​auf VoIP setzt. d.H. verliert mein Kabelmodem die Verbindung zum ISP sind mein Internet sowie meine Telefonleitung ​WEG+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
  
-Das letzte ​Wochenende ​war EXTREM! Ich habe jeden Ausfall den ich mitbekommen habe eigenhändig protokolliert und dokumentiert. Habe dann mehrfach an KabelBW geschrieben,​ Webformulare ausgefüllt und jedes mal das Protokoll als Beweis mit angehängt. Damit ich die Ausfälle nun nicht mehr alle per Hand dokumentieren muss habe ich 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.+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 entwickeltmit 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 DREI unterschiedliche ​Hosts im Internet ab. Einer davon ist direkt beim ISP (in meinem Fall KabelBW), zumindest ​dieser hat bei einer stabilen Verbindung praktisch IMMER online ​zu sein. Sind nun einmal alle drei Hosts gleichzeitig nicht erreichbar, so muss ein Problem mit der Internet Verbindung zum ISP vorliegen, da es sehr unwahrscheinlich ist, dass Zeitgleich DREI Hosts von unterschiedlichen Firmen an drei verschiedenen Stellen auf der Erde ausfallen ​können.+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 einfachweil 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 ​sowie im Syslog ​die Vorkommnisse mit Datum und Uhrzeit, ​Sekunden genau  ​protokolliert. ​+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"​ und nicht immer laufen lassen möchte ist es so ausgelegt, das man es einfach ein mal als Root auf einer beliebigen Console ausführt und laufen lässt. ​
  
-<​code>​+Hier die aktuellste Version des Scriptes: 
 + 
 +<​code ​bash kabelbw-isp-logger.sh>
 #!/bin/bash #!/bin/bash
 # #
-# KabelBW Internet Ausfall Protokollierer V 1.(2008-05-18+# KabelBW Internet Ausfall Protokollierer V 2.(2013-05-17
-# by Axel Werner [mail@awerner.homeip.net]+# by Axel Werner [mail@awerner.myhome-server.de]
 # #
 # #
Line 20: Line 23:
 # History: # History:
 # #
-#​ 2009-05-18 Public Release 1.1 - it now only logs CHANGES of the last State +      ​2009-05-18 ​     Public Release 1.1 - it now only logs CHANGES of the last State 
-# and does not log every bad linktest anymore. Also added more +                      ​and does not log every bad linktest anymore. Also added more 
-# Hosts so there is a better fault tolerance if one host may +                      ​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 +                      ​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, +                      ​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.+                      ​there must be a problem with the internet link to the ISP.
 # #
 +#       ​2009-05-19 ​     Added a Line for better Visibility in logfile
 # #
 +#       ​2009-05-20 ​     Change: Logging Date now is been determined at the start of
 +#                       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
 +#                       ​seconds,​ while in real the interupt been often +10secs
 +#                       ​longer.
 # #
 +#       ​2009-05-25 ​     Fix/add: added hosts to the status display.
 +#                       ​Syslog now also reports which Hosts been not available while in "​good"​ condition.
 +#                       ​Raised Ping TIMEOUT from 2secs to 4secs and made it configurable
 # #
 +#       ​2010-04-20 ​     change: added automatic date to name of logfile.
 # #
 +#       ​2013-05-17 ​     change: full script rewrite - New Version 2.0
 # #
 # #
 # User Config goes here # User Config goes here
-ISP=KabelBW +logfile=/​root/​kabelbw-ausfaelle-ab-`date +%F`.log 
-HOST1=smtp.kabelbw.de +pingIntervall=
-HOST2=web.de +hostsToTest="​smtp.kabelbw.de ​dns01.kabelbw.de dns02.kabelbw.de"
-HOST3=gmail.com +
-logfile=~/kabelbw-ausfaelle.log +
-#​logfile=~/​kabelbw-test.log+
  
  
-#####################################################################################​ 
-#initialize flags 
-LINK=good 
-LASTLINK=good 
-HOST1GOOD=yes 
-HOST2GOOD=yes 
-HOST3GOOD=yes 
  
  
-while true ; do +Defining bash functions..."​ 
- clear +now() { 
- #Check HOST1 +        date '+%F %T' 
- if ping -c1 -W 2 $HOST1 ; then  +}
- HOST1GOOD=yes +
- else +
- HOST1GOOD=no +
- fi+
  
- #Check HOST2 +unixTime() { 
- if ping -c1 -W 2 $HOST2 ; then  +        date '​+%s'​ 
- HOST2GOOD=yes +}
- else +
- HOST2GOOD=no +
- fi+
  
- #Check HOST3 
- if ping -c1 -W 2 $HOST3 ; then  
- HOST3GOOD=yes 
- else 
- HOST3GOOD=no 
- fi 
  
 +getIp() {
 +        # function requires ONE PLAIN IP ADDRESS OR HOSTNAME for argument
 +        # it then tests if its an ip adress or a hostname and "​prints out"
 +        # the IP address. If a hostname was given it resolves for the ip
 +        # and prints the ip instead.
 +        ipAddr=`dig +short "​$1"​`
 +        # dig +short returns empty string if argument was plain ip adress
 +        if [ -z "​$ipAddr"​ ] ; then
 +                echo "​$1"​
 +        else
 +                echo "​$ipAddr"​
 +        fi
 +}
  
- if [ "$HOST1GOOD" = "​yes"​ -a "$HOST2GOOD" = "​yes"​ -a "$HOST3GOOD" ​= "​yes"​ ] ; then  +pinger() { 
- LINK=good +        # function requires ONE PLAIN IP ADDRESS + FQDN/​Hostname for arguments 
- else +        echo "pinging: ​$@" 
- LINK=bad +        hostIp="$1" 
- fi+        hostName="$2"
  
 +        pingStartTime=`now`
  
- if [ "​$LINK" ​"​bad"​ -a "​$LASTLINK"​ = "​good"​ ] ; then +        TIMEOUT=2
- # Link lost...has been ok before.  +
- LASTLINK=bad +
- beep -f 1000 -n -f 2000 -n -f 1500 +
- logger "​Verbindung zu $ISP verloren! Die Hosts "​$HOST1",​ "​$HOST2"​ sowie "​$HOST3"​ waren zeitgleich nicht erreichbar."​ +
- echo `date`"​ -  Verbindung zu $ISP verloren! Die Hosts "​$HOST1",​ "​$HOST2"​ sowie "​$HOST3"​ waren zeitgleich nicht erreichbar."​ >> $logfile +
- fi+
  
 +        if ping -c1 -W "​$TIMEOUT"​ "​$hostIp"​ 2>&1 > /dev/nul ; then
 +                return 0
 +        else
 +                SCORE=`expr $SCORE + 1`
 +                echo "​WARNING:​ $hostName ($hostIp) was not pingable at $pingStartTime. (SCORE=$SCORE)"​ | tee -a "​$tmpFailedHosts"​
 +                return 666
 +        fi
 +}
  
  
- if [ "​$LINK"​ = "​good"​ -a "​$LASTLINK"​ = "​bad"​ ] ; then 
- # Link restored....been lost before. 
- LASTLINK=good 
- logger "​Verbindung zum Internet wiederhergestellt."​ 
- echo `date`"​ -  Verbindung zum Internet wiederhergestellt."​ >> $logfile 
- fi 
  
- echo  + 
- echo  +echo "$0 started on: `now` , writing log to: $logfile"​ 
- echo  + 
- echo  +# load pc speaker kernel driver module if not loaded by default 
- echo "HOST1GOOD: $HOST1GOOD+modprobe pcspkr 
- echo "HOST2GOOD: $HOST2GOOD+ 
- echo "HOST3GOOD: $HOST3GOOD+# set default state 
- echo "RECENT LINK: $LINK"​ +LINK="​up"​ 
- echo "LASTLINK:​ $LASTLINK+ 
- echo  +# reseting up/​downTimers 
- echo ... PRESS CTRL+C to Exit ! +wentDownTimeSecs=`unixTime` 
- sleep ​2+wentUpTimeSecs=`unixTime` 
 +upTime=0; 
 + 
 +tmpFailedHosts=`mktemp` 
 + 
 + 
 +#while loop 
 +while true ; do 
 + 
 +        # reseting score 
 +        SCORE=0 
 + 
 +        # reseting/​clearing tmp file with failed hosts 
 +        ​echo > $tmpFailedHosts 
 + 
 + 
 +        # test all Hosts listed in $hostsToTest 
 +        for H in $hostsToTest;​ do 
 +                pinger `getIp $H` $H 
 +        done 
 + 
 +        if [ "$SCORE" ​-ge 3 -a "​$LINK"​ = "​up"​ ]; then 
 +                ​LINK="​down"​ 
 +                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 "​$logfile
 +                ​cat ​"$tmpFailedHosts"​ | tee -a "​$logfile
 +                beep -f 2000 -n -f 1500 -n -f 1000 
 + 
 +        elif [ "​$SCORE"​ -eq 0 -a "​$LINK" ​= "​down"​ ]; then 
 +                LINK="up
 +                ​wentUpTimeSecs=`unixTime` 
 +                downTime=`expr $wentUpTimeSecs - $wentDownTimeSecs` 
 +                echo "KABEL BW LINK UP AGAIN at `now`DOWNTIME: $downTime secAll remote Host are reachable" | tee -a "​$logfile"​ 
 +                beep -f 1000 -n -f 1500 -n -f 2000 
 +        elif [ "​$SCORE"​ -ge 3 -a "​$LINK"​ = "​down"​ ]; then 
 +                # just audio feedback via pc speaker that link is still down 
 +                beep -l 200 -f 300 -n -l 400 -f 260 
 +        fi 
 + 
 +        ​sleep "​$pingIntervall"​
 done done
 +
 +exit
  
 </​code>​ </​code>​
 +
 + --- //​[[mail@awerner.myhome-server.de|Axel Werner]] 2013-05-17 19:56//
 +
 +
 +===== 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/​anderes Kabel-Modem erhalten habe) funktioniert die Verbindung bis auf ganz wenige und nur kurze Unterbrechungen SEHR GUT! Wie es scheint hat KabelBW in manchen Stadtteilen oder Straßenzügen Mega Probleme mit ihrer Intrastruktur. Traurig nur das man bei der Störungsstelle lieber die Kunden maltretiert und irgend welche "​dummen"​ Analyse-Prozeduren immer und immer wieder durchlaufen lässt um die gemeldete Störung in dem Moment wieder fallen zu lassen, sobald mal für 5 Minuten die Verbindung wieder da ist. Hier wäre es doch sehr wünschenswert wenn sich diese Leute einfach mal DAS LOG der Kundenbeschwerden/​Störungsmeldungen anschauen würden. Sie könnten leicht erkennen das hier doch ernstzunehmende Fehler auf der Leitungsstrecke vorliegen und vieleicht mal ZWEI MAL MEHR einen Techniker schicken um die Intrastruktur richtig auszumessen und zu untersuchen. Daher vertrete ich inzw. folgende Meinung: Ist die Leitung von KabelBW in Ordnung ist Internet und Telefonie über TV Kabel eine feine Sache und wirklich empehlenswert! Hat man jedoch Pech und die Leitungen sind nicht besonders beständig, so hat es sich bei mir gezeigt, bringt es bei KabelBW wohl leider nicht wirklich etwas sich andauernd zu beschwehren und Faxe zu schreiben. Das einzige was diese Leute wirklich verstehen ist KÜNDIGEN. Und das möglichst sofort. Hat sich später die Lage geklärt kann man den Vertrag ja auch kurzfristig weiterlaufen lassen. ​
 +
 + --- //​[[mail@awerner.myhome-server.de|Axel Werner]] 2010-12-15 17:39//
 +
 +
 +===== 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. ​
 +
 + --- //​[[mail@awerner.myhome-server.de|Axel Werner]] 2013-05-17 19:56//
 +
 +
 +{{tag>​bash shell linux isp kabelbw scripting log ping link internet vorsicht kunde provider service}}
  
it-artikel/linux/probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script.1242671931.txt.gz · Last modified: 2009-05-18 20:38 by mail@awerner.myhome-server.de