Bekijk de volledige versie : Skript bei Verlust WAN-Verbindung ausführen
Hallo,
Ich würde gerne sobald das angeschlossene Modem ausgeschalten wird ein Skript laufen lassen um den Router kontrolliert herunterzufahren. Wie würde sich das verwirklichen lassen?
lg,
F.
Kannst versuchen, ein Script zu basteln, das das Modem anpingt und wenn ein Timeout kommt, dann soll es "halt" ausführen. Oder das Script fragt ifconfig ab, oder vielleicht kann man sich noch was überlegen. Dann lässt du dieses Script alle 5 Minuten, 10 Minuten, oder wie oft auch immer mit Cron ausführen. Nur so eine Idee, auf die Schnelle.
Gruß
Robert
newbiefan
23-09-2009, 21:08
Wie Akbor schon gesagt hat.....ein Script basteln. Dies ist manchmal nicht einfach, in deinem Fall aber doch. Aber du musst auch etwas tun - ergaenze einfach diesen Script und verwende diesen. Wenn du nach Wengi installiert hast, ist /opt/sbin/getip ein guter Platz. Nicht vergessen:
chmod 755 /opt/sbin/getip
Hier der Script:
#! /bin/sh
#Script getip shows you the ip address of any interface
#(c) by Helmut 2009 (newbiefan at wl500g.info)
#Licence: GNU GPL2
#Contact: none
#Syntax: getip interface (where interface is br0.......)
interfaces=`/sbin/ifconfig | grep "Link encap" | awk '{print $1}'| awk -F: '{print $1}'`
ok=false
if [ -z "$1" ] ; then
echo "Missing argument, syntax is: getip Name_of_interface"
echo "valid interfaces are:" $interfaces
exit 1
fi
for valid_interface in $interfaces ; do
if [ $1 = $valid_interface ] ; then
ip=`/sbin/ifconfig $1 | grep "inet addr" | awk '{print $2}'| awk -F: '{print $2}'`
ok=true
if [ -z "$ip" ] ; then
echo "Interface $valid_interface has no ip!"
else
echo "Interface $valid_interface has ip:" $ip
fi
fi
done
if [ $ok = "false" ] ; then
echo "wrong interface, use one of this:" $interfaces
fi
Nun zumindest hast du einen Start, den Rest musst selber machen.....notfalls nochmals nachfragen.
have fun
newbiefan
23-09-2009, 21:53
Oder noch einfacher, wie akbor schon gesagt hat,
mit cron den script systemhalt alle x Minuten aufrufen:
#! /bin/sh
#Script systemhalt shutdown your system when host not reachable
#(c) by Helmut 2009 (newbiefan at wl500g.info)
#Licence: GNU GPL2
#Contact: none
#Syntax: systemhalt
ipaddress=192.168.2.1 #change this, use ip of your modem
countping=`ping -c 1 $ipaddress | grep received | cut -d " " -f4`
if [ $countping -eq 0 ] ; then
# failed Host is not available
echo "Modem $ipaddress is down, system shutdown started"
# logger "system halted, modem not reachable"
/sbin/halt
else
# uncomment when needed
# echo "Modem $ipaddress is up at" `date`
fi
Du musst in die Variable "ipaddress" die IP von deinem Modem eintragen. Vergiss nicht ausfuehrbar machen mit
chmod 755 /opt/sbin/systemhalt
Ausprobieren - ich habe kein Modem!
viel Spass
Helmut, ich würde die E-Mail aus dem Header rauslöschen, scheiss auf GPL in diesem Fall, die Bots sind überall und suchen gierig nach Emailadressen :)
Gruß
Robert
newbiefan
23-09-2009, 22:20
Hi Robert, danke fuer den Hinweis - das ist aber sowieso meine Spam-Adresse.
Da kommen von Haus aus nur mehr wenige durch....aber ich nimm's trotzdem raus, koennte doch dazu fuehren, dass meine Spam-Email unbrauchbar wird.
LG
Helmut
Super - Danke für die rasche Hilfe!
Da mir eine Minute zu lange ist habe ich es in eine Endlosschleife die alle 2sec den Ping ausführt gepackt.
lg,
Hi,
warum ist es Dir so wichtig, nach spätestens 2 sec. auf einen Verbindungsabbruch zu reagieren?
Alle 2 sec. über cron den Ping anzustoßen macht ja schon Aufwand.
Was meinst Du mit Endlosschleife? Doch hoffentlich keinen Busy-wait, oder?
Ich möchte den Router / Modem nicht 24/7 laufen haben. Zum Ein-/Ausschalten habe ich einen Funkschalter - damit lässt sich Modem und Router auch bequem aus dem Wohnzimmer ein- bzw. ausschalten. Bei meinem alten Router kein Problem (da keine externen Laufwerke die ein sauberers unmount gebraucht hätten).
Somit war meine Idee, dass der Router runterfährt sobald das Modem aus ist. Und das soll eben so schnell als möglich geschehen da ich den Router erst abschlaten kann sobald der runtergefahren ist. Ob nun Busy-Wait oder Cron (so weit ich weiß ist da die kleinste Einheit eine Minute) ist bei dem Intervall denke ich auch schon egal.
newbiefan
24-09-2009, 19:01
Zum Ein-/Ausschalten habe ich einen Funkschalter - damit lässt sich Modem und Router auch bequem aus dem Wohnzimmer ein- bzw. ausschalten.
Da wuerde ich nur das Modem mit Funk-Steckdose ausschalten und den Router ueber ein einfaches Zeitrelais verzoegert ausschalten. Die Zeit ist dann nicht mehr kritisch, nach 5 Minuten einfach ausschalten. Einen Cron-Job alle Minuten (oder zwei) im Background den Script starten lassen .
Programme, Scripte usw. startet man im Hintergrund, indem man einfach das & Zeichen hinter den Aufruf haengt -
also z.Bspl.: /opt/sbin/systemhalt &