Online Check Script: hat der ff-router IPv4 auf dem WAN-Interface


#1

Überarbeitet 16.07 Version 3 mit PING statt WGET (WGET kein Timeout einstellbar)
Hallo hier eine kleines Shell Script was auf eurem Freifunk Router mit cron gestartet wird, dieses guckt dann nach ob eine Webseite oder IP mit PING erreichbar ist, wenn keine zu erreichen ist, startet es das WAN Interface neu und testet nochmal, weitere Fehlschläge enden im Reboot des Routers. Ich brauche das Script da sich der FF Router irgendwie nach ~24h verschluckt. Getestet mit Berlin Firmware Kathleen 0.3.0 auf einem TP-Link 210. Das Script habe ich nach /usr/bin/ kopiert und starte es mit crontab alle 10min */10 * * * * /usr/bin/onlinecheck.sh… ihr könnt auch andere Webseiten oder IPs eintragen, wenn ihr nur IPs benutzt wird der DNS nicht getestet, wenn ihr oben ALOSF2=true macht wird nicht rebootet.
Viel Spaß

#!/bin/sh
ws1="www.microsoft.com";
ws2="8.8.8.8";
ws3="ntp.org";
ALOSF=false;
ALOSF2=false;
ping -c 1 "$ws1"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
ping -c 1 "$ws2"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
ping -c 1 "$ws3"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
if [ "$ALOSF" = false ]; then
  # Error 1 Reconnect the WAN Interface
ifup wan
else
exit 0
fi
sleep 1m
ping -c 1 "$ws1"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
ping -c 1 "$ws2"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
ping -c 1 "$ws3"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
if [ "$ALOSF2" = false ]; then
  # Error 2 Reboot the Device
reboot
fi

#3

Mache daraus mal einen INT Vergleich, anstatt eines Stringvergleiches.

if [ $? -eq 0 ] ; then

Hinweis String Vergleichs Operatoren != == <= >= …


#4

Die “Online”-Definition ist eigenartig.
(und angesichts der bisherigen Diskussionen dazu vielleicht nicht besonders hilfreich.)
batctl gwl, batctl p, evtl ping auf eine supernode-Alias-IP, siehe z.B. das hier…(PRs welcome)

Vor allem: Was soll ein reboot bringen auf dieser Entscheidungsgrundlage?


#6

Kein Plan was Du meinst, ich hab das so zusammengeschustert, hab da eigendlich kein Plan von, bin aber froh wenn was einfach und simple funktioniert. Nimm doch den Code und schreibe ihn so wie Du meinst und Poste ihn.

Viele Grüße


#7

Mein Router hängt nach ~24h, ich hoffe das er mit diesem Script neustartet. Habe es nochmal überarbeitet mit Ping, da wget keinen Timeout hat auf der Busybox…


#8

Dir ist aber schon klar, dass Du mit dem Script “so” nur die WAN-Anbindung testest, nicht ob der Freifunk-Router online ist.
(Ich habe das Betreff mal entsprechend angepasst.)

Nicht, dass da am WAN nicht auch was schiefgehen könnte, aber ich würde in diesem Szenario (“dhcp-lease geht verloren” evtl. auf ein Problem bei Wan-Routerchen suchen. Also z.B. die leidigen DDWRT-Probleme oder ein restriktives “Gastnetz” einer Easybox…)
Aber nach meiner Lesart ist eine Freifunk-Router erst Online, wenn er auch mindestens einen Nachbar-FF-Router sehen kann, besser noch ein Gateway.


#9

Jo Betreff ist so eindeutiger :), mein Problem ist halt, das nach ~24h das Freifunk Netzwerk WLAN Technisch noch zu sehen ist aber man kann nicht mehr Connecten auch mein Homerouter zeigt den FF Router nicht mehr an. Aber jetzt wo Du es sagst DHCP Lease… Ist genau auf 24h gestellt. Dann wird es wohl daran liegen. Ich teste die Woche und melde mich dann nochmal.

Viele Grüße


#10

Und das ist jetzt was für einer?
So ein ähnliches Szenario hatten wir ja schon hier


#11

ein TP-Link mit Stock Firmware


#12

Also am DHCP lag es nicht, habe alle Szenarien durchgespielt. Seitdem das Script drauf ist läuft der Router, er hat auch noch nicht rebootet, immer niur die erste Schleife mit ifup wan. ich lass das jetzt so never touch a running system :wink: Vieleicht reicht es auch nur die ip von dem wan interface einzutragen, das er nur checkt ob der hauptrouter da ist, dann gibs auch keine probleme wenn er mit dem mesh netzt verbunden ist und von da internet bekommt…


#13

Hier nochmal das Script mit einer kleinen Abänderung so wie ich es jetzt am laufen habe. Bei “ws4” müsst ihr euren WAN Gateway eintragen, somit wird der Router nur dann neugestartet wenn garnix mehr geht.

#!/bin/sh
ws1="freifunk.net";
ws2="8.8.8.8";
ws3="ntp.org";
ws4="192.168.4.1";
ALOSF=false;
ALOSF2=false;
ping -c 1 "$ws1"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
ping -c 1 "$ws2"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
ping -c 1 "$ws3"
if [ "$?" = 0 ]; then
  ALOSF=true;
fi
if [ "$ALOSF" = false ]; then
  # Error 1 Reconnect the WAN Interface
ifup wan
else
exit 0
fi
sleep 1m
ping -c 1 "$ws1"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
ping -c 1 "$ws2"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
ping -c 1 "$ws4"
if [ "$?" = 0 ]; then
  ALOSF2=true;
fi
if [ "$ALOSF2" = false ]; then
  # Error 2 Reboot the Device
reboot
fi

#14

Wenn man das wirklich “so” tun möchte, dann bitte mindestens 3 Pakete ( “-c 3” ) absetzen, da ein initialer DNS-Timeout durchaus im Bereich dessen ist, was ich einem Heimrouter mal zugestehen würde.