[Freifunk Franken] Der altbekannte Bug / Konektivitäts watchdog

Jan-Tarek Butt buttjantarek at googlemail.com
Mo Jul 22 02:11:51 CEST 2013


ich habe auf wunsch von Tim die Watchdog datei noch mal ungezipt angehängt

Mfg
Jan-Tarek Butt

#!/bin/bash

# Dieser Watchdog überprüft mit hilfe von verschidenen zuständen ob:
# -ob es sich um ein mesh router handelt
# -wenn es sich um ein mesh router handelt ob er korekt läuft
# -wenn es ich um ein VPN router handelt der ein mesh router im lokalem
netzt hat wo der ath9k Bug auftrit ein reboot macht
# der zustand wenn ein VPN router keine lokalen mesh router besitzt konnte
ich bisher nicht definiren

#-----Start Config-----
#Angabe des VPN interfaces aus ifconfig
vpninterface=ffolVPN

#Angabe der datei um die werte der Variablen zu Speichern
varfile=watchdogVariabeln

#Meshrouter hat kein Uplink. Reboot nach X Cron abfragen
mupreboot=8

#Mesh beim Meshrouter funktionirt nicht. Reboot nach X Cron abfragen
mmeshreboot=4

#VPNrouter hat keine verbindung zu Netmon. Reboot nach X Cron abfragen
uupreboot=4

#VPNrouter Mesh funktionirt nicht. Reboot nach X Cron abfragen
umeshreboot=4

#Kontrolle ob mesh router vorhanden nach x cron abfragen zurücksetzen
meshzust=10
#-----End Config-----

#Netmaon Adresse. per uci auslesen
api_ipv6_adress=`uci get configurator. at api[0].ipv6_address`
iface=`uci get configurator. at api[0].ipv6_interface`
netmonadr="$api_ipv6_adress"%"$iface"

#Variabeln auslehsen
export a=$(cat $varfile | head -n1 | tail -n1)
export b=$(cat $varfile | head -n2 | tail -n1)
export c=$(cat $varfile | head -n3 | tail -n1)
export d=$(cat $varfile | head -n4 | tail -n1)
export e=$(cat $varfile | head -n5 | tail -n1)
export f=$(cat $varfile | head -n6 | tail -n1)

        #überprüft ob Netmon ereichtbar ist
        ping6 -c 4 -t 1 $netmonadr;
        ping=$?

        #überprüft ob der VPN läuft
        ifconfig | grep $vpninterface
        vpn=$?

        #überprüft ob Orginators exestiren
        batctl o |grep -E "(wlan| $vpninterface )"
        orginator=$?

        if [ $orginator -eq 0 -a $e -eq 0 ]; then
        e=1
        sed -i "5c $e" $varfile
        fi


        if [ $e -eq 1 ]; then
        f=$(( $f + 1 ))
        sed -i "6c $f" $varfile
        fi
        if [ $f -eq $meshzust ]; then
        e=0
        f=0
        sed -i "6c $f" $varfile
        sed -i "5c $e" $varfile
        fi

#################################################
#                       Meshrouter Kontrolle                             #
#################################################

        #Wenn Orginator, Ping gleich 0 sind und vpn gleich 1. Meshrouter
läuft korrekt
        if [ $orginator -eq 0 -a $ping -eq 0 -a $vpn -ne 0 ]; then

                a=0
                b=0
                c=0
                d=0

                sed -i "1c $a" $varfile
                sed -i "2c $b" $varfile
                sed -i "3c $c" $varfile
                sed -i "4c $d" $varfile
                exit
        fi

        # Meshrouter hat kein Uplink
        if [ $orginator -eq 0 -a $ping -ne 0 -a $vpn -ne 0 ]; then

                a=$(( $a + 1 ))
                sed -i "1c $a" $varfile

                if [ $a -eq $mupreboot ]; then

                        sed -i "1c 0" $varfile
                        reboot
                fi
        fi

        #Mesh beim meshrouter funktionirt nicht
        if [ $orginator -ne 0 -a $ping -ne 0 -a $vpn -ne 0 ]; then

                b=$(( $b + 1 ))
                sed -i "2c $b" $varfile


                if [ $b -eq $mmeshreboot ]; then

                        sed -i "2c 0" $varfile
                        reboot
                fi
        fi

#################################################
#                           VPN Router kontrolle                         #
#################################################

        #VPN Router mit lokalem Meshrouter läuft korrekt
        if [ $orginator -eq 0 -a $ping -eq 0 -a $vpn -eq 0 ]; then

                a=0
                b=0
                c=0
                d=0

                sed -i "1c $a" $varfile
                sed -i "2c $b" $varfile
                sed -i "3c $c" $varfile
                sed -i "4c $d" $varfile
                exit
        fi

        #VPN Router keine verbindung zu netmon
        if [ $ping -ne 0 -a $vpn -eq 0 ]; then

                c=$(( $c + 1 ))
                sed -i "3c $c" $varfile

                if [ $c -eq $uupreboot ]; then

                        sed -i "3c 0" $varfile
                        reboot
                fi
        fi

        #VPN Router Mesh funktionirt nicht
        if [ $orginator -ne 0 -a $e -eq 1 -a $vpn -eq 0 ]; then

                d=$(( $d + 1 ))
                sed -i "4c $d" $varfile

                if [ $d -eq $umeshreboot ]; then

                        sed -i "4c 0" $varfile
                        reboot
                fi
        fi



Am 21. Juli 2013 22:39 schrieb Jan-Tarek Butt <buttjantarek at googlemail.com>:

> Hallo ich bin mit meiner ersten Version des Skriptes fertig (siehe Anhang)
> :)
>
> das Skript wird komplett über cronjob ausgeführt (wie es gewünscht war)
> die verschiedenen Zustände werden in einer extra Datei gespeichert
> Leider kann ich eine zustand nicht definieren und zwar wenn man einen VPN
> Router hat der im lokalen Netz keine mesh Router hat. Eine Idee war was
> wohl passiert wenn der Router sein eigenes WLAN Interface über die
> linklokal Adresse anpingen und sich im falle eines Ath9k Bugs was ändert
>
> Mfg
>
> Jan-Tarek Butt
>
>
> Am 15. Juli 2013 12:06 schrieb Bjoern Franke <bjo at nord-west.org>:
>
> Am 15.07.2013 12:02, schrieb Tim Niemeyer:
>> > Hallo
>> >
>> > * Jan-Tarek Butt <buttjantarek at googlemail.com> [15-07-13 11:37]:
>> >> Hm der Server ist z.z. down -.-
>> >>
>> >> Hier ist ein anderer pad link:
>> https://pad.kreativitaet-trifft-technik.de/p/
>> >> Watchdog
>> > Ich würde die Diskussion gern auf den Mailinglisten weiterführen. Pads
>> > sind so schnell verschollen..
>>
>>
>> Full ACK
>>
>>
>> --
>> xmpp bjo at schafweide.org
>> bjo.nord-west.org | nord-west.org | freifunk-ol.de
>> _______________________________________________
>> franken mailing list
>> franken at freifunk.net
>> http://lists.freifunk.net/mailman/listinfo/franken-freifunk.net
>>
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.freifunk.net/mailman/private/franken-freifunk.net/attachments/20130722/48421b2e/attachment.html>


Mehr Informationen über die Mailingliste franken