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

Both sides previous revision Previous revision
Next revision
Previous revision
it-artikel:linux:probleme-mit-der-internetverbindung-automatisch-protokollieren-mit-dem-kabelbw-isp-logger.sh-script [2009-06-29 06:15]
mail@awerner.myhome-server.de
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 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, 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.(2009-05-25+# 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-19 ​     Added a Line for better Visibility in logfile
 # #
-#​ 2009-05-20 Change:​ Logging Date now is been determined at the start of +      ​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 +                      ​the Sampling, not at the End. Since Pings can take some 
-# Time on failing hosts the Date in the logs is often too +                      ​Time on failing hosts the Date in the logs is often too 
-# late. so in logs it seems the interupted link was only +                      ​late. so in logs it seems the interupted link was only 
-# seconds, while in real the interupt been often +10secs +                      ​seconds, while in real the interupt been often +10secs 
-# longer.+                      ​longer.
 # #
-#​ 2009-05-25 Fix/​add:​ added hosts to the status display.+      ​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 
-DATE=`date` 
  
-while true ; do 
- clear 
- DATE=`date` 
- #Check HOST1 
- if ping -c1 -W 2 $HOST1 ; then  
- HOST1GOOD=yes 
- else 
- HOST1GOOD=no 
- fi 
  
- #Check HOST2 +Defining bash functions..."​ 
- if ping -c1 -W 2 $HOST2 ; then  +now() { 
- HOST2GOOD=yes +        date '+%F %T' 
- else +}
- HOST2GOOD=no +
- fi+
  
- #Check HOST3 +unixTime() { 
- if ping -c1 -W 2 $HOST3 ; then  +        date '​+%s'​ 
- HOST3GOOD=yes +}
- else +
- HOST3GOOD=no +
- fi+
  
  
- if "$HOST1GOOD" = "​no"​ -a "$HOST2GOOD"​ = "no" -"$HOST3GOOD"​ = "no" ] ; then  +getIp() { 
- LINK=bad +        # function requires ONE PLAIN IP ADDRESS OR HOSTNAME for argument 
- beep -f 1000 -n -f 2000 -n -f 1500 +        # it then tests if its an ip adress or a hostname and "prints out" 
- else +        # the IP address. If a hostname was given it resolves for the ip 
- #As long just ONE Host of three is available, the link is still mentioned good! +        # and prints the ip instead. 
- LINK=good +        ipAddr=`dig +short ​"$1"
- fi+        # dig +short returns empty string if argument was plain ip adress 
 +        if [ -"$ipAddr" ] ; then 
 +                echo "​$1"​ 
 +        else 
 +                echo "​$ipAddr"​ 
 +        fi 
 +}
  
 +pinger() {
 +        # function requires ONE PLAIN IP ADDRESS + FQDN/​Hostname for arguments
 +        echo "​pinging:​ $@"
 +        hostIp="​$1"​
 +        hostName="​$2"​
  
- if [ "​$LINK" ​"​bad"​ -a "​$LASTLINK"​ = "​good"​ ] ; then +        pingStartTime=`now`
- # Link lost...has been ok before.  +
- LASTLINK=bad +
- 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+
  
 +        TIMEOUT=2
  
 +        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 
- echo "​--------------------------------------------------------------------------------------------"​ >> $logfile 
- fi 
  
- echo  + 
- echo  + 
- echo  +echo "$0 started on: `now` , writing log to: $logfile
- echo  + 
- echo "HOST1GOOD ($HOST1): $HOST1GOOD+# load pc speaker kernel driver module if not loaded by default 
- echo "HOST2GOOD ($HOST2): $HOST2GOOD+modprobe pcspkr 
- echo "HOST3GOOD ($HOST3): $HOST3GOOD"​ + 
- echo "RECENT ​LINK: $LINK+# set default state 
- echo "LAST LINK: $LASTLINK+LINK="​up"​ 
- echo  + 
- echo ... PRESS CTRL+C to Exit ! +# reseting up/​downTimers 
- sleep ​2+wentDownTimeSecs=`unixTime` 
 +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
  
-</​code>​+exit
  
- --- //​[[mail@awerner.homeip.net|Axel Werner]] 2009-05-18 20:18//+</code>
  
-===== Nachtrag 25.5.2009 ===== + --- //​[[mail@awerner.myhome-server.de|Axel Werner]] 2013-05-17 19:56//
-Ein Elektriker im Auftrag von KabelBW war Heute Morgen bei mir und hat neben diversen Signal-Pegel Messungen an meiner Netzwerkdose,​ sowie am Modem auch noch gleich das Kabelmodem mit samt Coax-Kabel und Netzteil ausgetauschtWir dürfen gespannt sein ob sich die Probleme damit erledigt haben.+
  
-===== Nachtrag 27.5.2009 ===== 
-WAHNSINN! Gestern hatte ich einen ganzen Tag ohne Ausfall des Internets!! Doch Heute gleich wieder drei mal. 2x jeweils nur ca 7-14 Sekunden lange am Nachmittag, doch dann Heute Abend zwischen 19.20Uhr bis 20:01 wiedermal TOTALAUSFALL von Internet und Telefon. Telefon (ISDN) funktionierte zudem erst nach einem manuellen Modem Reset wieder, selbst als die Internet Verbindung inzw. wiederhergestellt war.  
  
-Ich bin erst seid April 2009 Kunde von Kabel BW und bereue ​es jetzt schonBei ARCOR ist das Internet per DSL mit 6Mbit zwar verhältnismäßig langsam, dafür war es aber ROCK SOLID! In ca 4 Jahren ​bei ARCOR ist mein Internet nur EIN MAL wirklich ausgefallenweil mein DSL Modem gestorben ​ist. 24h später hatte ich ErsatzSollte ​es erforderlich sein zurück ​zu wechseln ?!? Man darf gespannt sein...+===== 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 IntrastrukturTraurig 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 lassensobald 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 inzwfolgende 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 schreibenDas einzige was diese Leute wirklich verstehen ist KÜNDIGENUnd das möglichst sofort. Hat sich später die Lage geklärt kann man den Vertrag ja auch kurzfristig weiterlaufen lassen
  
- --- //​[[mail@awerner.homeip.net|Axel Werner]] ​2009-05-27 20:17//+ --- //​[[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}} {{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.1246248944.txt.gz · Last modified: 2009-06-29 06:15 by mail@awerner.myhome-server.de