Hallo,
ich möchte eine Lösung vorstellen, die die 2,4GHz WLAN Schnittstelle automatisch ausschaltet wenn kein lokaler Benutzer mehr aktiv ist.
Zunächst hier das Script für die FB 7390, das in die debug.cfg eingetragen werden kann (also ohne irgendwelche Addons installieren zu müssen):
Es wird unter /var/tmp/CheckWLAN.log ein Logfile erstellt. Das script checkt alle 5 Minuten (=300 Sekunden) ob ein lokaler client activ ist. Lokale Clients sind alle PCs von Usern, also keine Server, Internetradios usw. die ständig an sind. In der FB habe ich den IP Bereich entsprechend angepaßt, damit zB dynamisch nur der Bereich 192.168.66.50 - .52 vergeben wird, wie in der Hostliste zu sehen.
Viel Spaß damit!
Wer kann dieses Skript verbessern? Vom Timing her könnte es passieren, dass sich jemand ins Netz kommt mit WLAN und im selben Augenblick das WLAn abgeschaltet wird, da 5 Min vorbei. Wie kann das behoben werden? Danke!
Ist es ein Problem, wenn ich die Funktion rekursiv aufrufe?
ich möchte eine Lösung vorstellen, die die 2,4GHz WLAN Schnittstelle automatisch ausschaltet wenn kein lokaler Benutzer mehr aktiv ist.
Zunächst hier das Script für die FB 7390, das in die debug.cfg eingetragen werden kann (also ohne irgendwelche Addons installieren zu müssen):
Code:
######################
# WLAN AUTO OFF #
######################
logfileCheckWLAN="/var/tmp/CheckWLAN.log"
# Zeit
time=`date`
echo "$time: Start WLAN Auto Off." >>$logfileCheckWLAN
checkWLAN() {
echo "$time: Execute CheckWLAN" >>$logfileCheckWLAN
# Liste der zu testenden Adressen
# nicht zu überprüfende lassen
# sich auskommentieren
HOSTS=`grep -v ^# <<!
#192.168.66.1 Fritzbox Router 7390
#192.168.66.2 Fritzbox Router 7170
192.168.66.50
192.168.66.51
192.168.66.52
#192.168.66.36 AppleTv
#192.168.66.37 Server!`
# Ping-Befehl mit Parametern
# hier: sendet eine Anfrage mit timeout 1s
PING="ping -c 1 -W 1"
ACTIVE=false
for ADDR in ${HOSTS}
do
# Zeit
time=`date`
#echo ${PING} ${ADDR}
${PING} ${ADDR} > /dev/null
if [ $? -eq 0 ]
then
echo "$time: ${ADDR} is active!" >>$logfileCheckWLAN
ACTIVE=true
continue
else
echo "$time: ${ADDR} is not active!" >>$logfileCheckWLAN
fi
done
# Zeit
time=`date`
if [ "${ACTIVE}" = "false" ]
then
echo "$time: No PCs active, turn WLAN OFF!" >>$logfileCheckWLAN
ctlmgr_ctl w wlan settings/ap_enabled 0
else
echo "$time: Do nothing, some PCs are active." >>$logfileCheckWLAN
fi
(sleep 300; checkWLAN) &
}
(sleep 300; checkWLAN) &
Es wird unter /var/tmp/CheckWLAN.log ein Logfile erstellt. Das script checkt alle 5 Minuten (=300 Sekunden) ob ein lokaler client activ ist. Lokale Clients sind alle PCs von Usern, also keine Server, Internetradios usw. die ständig an sind. In der FB habe ich den IP Bereich entsprechend angepaßt, damit zB dynamisch nur der Bereich 192.168.66.50 - .52 vergeben wird, wie in der Hostliste zu sehen.
Viel Spaß damit!
Wer kann dieses Skript verbessern? Vom Timing her könnte es passieren, dass sich jemand ins Netz kommt mit WLAN und im selben Augenblick das WLAn abgeschaltet wird, da 5 Min vorbei. Wie kann das behoben werden? Danke!
Ist es ein Problem, wenn ich die Funktion rekursiv aufrufe?
Zuletzt bearbeitet: