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

Jan-Tarek Butt buttjantarek at googlemail.com
Di Jul 23 16:33:25 CEST 2013


Hallo Tim,


> Bitte schau dir unten meine Anmerkungen an und schick es dann ggf
> nochmal rum.
> >
> > 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
> Hier bitte dir Rechtschreibung mit einem Tool überprüfen, da sind
> etliche Fehler drin. Das gilt auch für die folgenden Kommentare.
>

Hab meine zwillingsschwester Drüber gucken lassen und durfte mich einiges
anhören ;)


> >
> > #-----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"
> Hier ist die Frage, was passiert wenn der Netmon Router mal nicht da
> ist? Es würde vermutlich Sinn machen, mindestens einen zweiten Uplink zu
> prüfen.
>

Wir Haben keinen zweiten UP desswegen habe ich das rausgelassen wäre
natürlich dennoch gut in diesem punkt eine redondans zu haben


>
> > #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)
> Die Variablennamen sind nicht selbsterklärend. Außerdem stimmt hier was
> mit der Einrückung nicht.
>

ich hab jetzt das export rausgeschmissen und christians vorschlag
eingebaut, die variablen sind jetzt auch umbenant


>
> >         #überprüft ob Netmon ereichtbar ist
> >         ping6 -c 4 -t 1 $netmonadr;
> Warum -t1? Letztlich schadet es nicht, aber ist da vielleicht etwas
> anderes gemeint?
>

huch das ist für ttl weiß nicht wie das darein gerutsch ist


>
> >         ping=$?
>
> >         #überprüft ob der VPN läuft
> >         ifconfig | grep $vpninterface
> >         vpn=$?
> test "$(cat /sys/class/net/eth0/operstate)" = "up"
> Würde mir hier besser gefallen, wobei das sicherlich auch noch besser
> geht. Grep und ifconfig sind beides schon ziemlich dicke Programme.
>

damit kann ich nicht das VPNinterface nachgucken es recht nicht nur zu
gucken ob das eth0 interface vorhaden ist


>
> >         #überprüft ob Orginators exestiren
> >         batctl o |grep -E "(wlan| $vpninterface )"
> >         orginator=$?
> Ich denke, das geht so nicht, da das grep immer etwas finden wird:
> head -n1 /sys/kernel/debug/batman_adv/bat0/originators
>
>
Doch das geht ich hab es selbs getestet


> Auch hier hat das sysfs etwas zu bieten:
> /sys/kernel/debug/batman_adv/bat0/originators
>

es geht um dem fall um mesh router im Lokalen netz


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

:D e speichert die history der mesh router also ob der router in der
vergangenheit mein eine meshverbindung hatte


>
> Ich breche das ab hier erstmal ab. Bitte erstmal diese Zustandsvariblen
> sauber machen, sonst kann man das nicht sinnvoll verstehen.
>


> Hier nochmal ein Vorschlag, wie du diese a-f Variblen sauber speichern
> kannst, ohne jedes mal die sed-Keule zu nutzen:
> --- 8< ---
> #!/bin/sh
>
> STATEFILE=/tmp/state.conf
>
> # Create STATEFILE with default values
> test -f $STATEFILE || cat <<EOF > $STATEFILE
> NETMON_PING_FAIL=0
> ORIGINATOR_FAIL=0
> EOF
>
> # Load STATEFILE
> . $STATEFILE
>
> # check ping
> # ..
> NETMON_PING_FAIL=$(( $NETMON_PING_FAIL + 1))
> # check originators
> # ..
>
> # Save STATEFILE
> cat <<EOF > $STATEFILE
> NETMON_PING_FAIL=$NETMON_PING_FAIL
> ORIGINATOR_FAIL=$ORIGINATOR_FAIL
> EOF
> --- >8 ---
>

muss ich mal bei zeit mit einbauen


>
> LG
> Tim
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.freifunk.net/mailman/private/franken-freifunk.net/attachments/20130723/18c518dc/attachment.html>


Mehr Informationen über die Mailingliste franken