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

Jan-Tarek Butt buttjantarek at googlemail.com
Sa Aug 10 15:17:50 CEST 2013


Hallo ich habe noch mal ein paar änderungen vorgenommen und eine fehler
behoben.
Wie immer bitte fleißig Komentieren wenn jemand ideen oder verbesserungs
vorschläge hat.

#!/bin/bash

# Dieser Watchdog überprüft mit Hilfe von verschiedenen zuständen ob:
# -es sich um einen Mesh Router handelt
# -wenn es sich um ein Mesh Router handelt, ob er korrekt läuft
# -wenn es ich um ein VPN Router handelt der ein Mesh Router im lokalem
Netzt hat, wo der ath9k Bug auftritt 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 funktioniert nicht. Reboot nach X Cron abfragen
mmeshreboot=4

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

#VPNrouter Mesh funktioniert 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 <http://twitter.com/@api>
[0].ipv6_address`
iface=`uci get configurator. at api <http://twitter.com/@api>
[0].ipv6_interface`
netmonadr="$api_ipv6_adress"%"$iface"

#Variabeln auslehsen
        meshkeinUP=$(head -n1 $varfile | tail -n1)
        meshRkeinmesh=$(head -n2 $varfile | tail -n1)
        upkeinnetmon=$(head -n3 $varfile | tail -n1)
        upkeinmesh=$(head -n4 $varfile | tail -n1)
        meshhisto=$(head -n5 $varfile | tail -n1)
        histodauer=$(head -n6 $varfile | tail -n1)

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

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

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

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

        if [ $meshhisto -eq 1 ]; then
        histodauer=$(( $histodauer + 1 ))
        sed -i "6c $histodauer" $varfile
        fi
        if [ $histodauer -eq $meshzust ]; then
        sed -i "6c 0" $varfile
        sed -i "5c 0" $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

                sed -i "1c 0" $varfile
                sed -i "2c 0" $varfile
                sed -i "3c 0" $varfile
                sed -i "4c 0" $varfile
                sed -i "6c 0" $varfile
                exit
        fi

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

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

                if [ $meshkeinUP -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

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


                if [ $meshRkeinmesh -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

                sed -i "1c 0" $varfile
                sed -i "2c 0" $varfile
                sed -i "3c 0" $varfile
                sed -i "4c 0" $varfile
                sed -i "6c 0" $varfile
                exit
        fi

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

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

                if [ $upkeinnetmon -eq $uupreboot ]; then

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

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

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

                if [ $upkeinmesh -eq $umeshreboot ]; then

                        sed -i "5c 0" $varfile
                        sed -i "4c 0" $varfile
                        reboot
                fi
        fi
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.freifunk.net/mailman/private/franken-freifunk.net/attachments/20130810/e8821478/attachment.html>


Mehr Informationen über die Mailingliste franken