[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