Temat: Włączanie i wyłączanie jednym przyciskiem wielu AP
Oto skrypt pozwalający włączać i wyłączać na przemian kilka AP jednym przyciskiem. Każde przyciśnięcie zmienia kombinację włączonych i wyłączonych AP.
Skrypt należy wkleić do pliku /etc/hotplug.d/button/wifiswitcher wszystko działa zależnie od ilości zdefiniowanych AP.
#!/bin/sh
# WiFi Switcher - Access Point's sequential switch
# Script version 1.00 Rafal Drzymala 2012
#
# Changelog
# 1.00 RD First stable code
#
if [ "$BUTTON" == "BTN_1" ] && [ "$ACTION" == "released" ]; then
SCR=$(basename $0)
logger -p user.notice -t $SCR "Wifi button pressed"
WLANS=$(uci show wireless | awk -F[.=] '{if ($3=="mode" && $4=="ap") print $2}')
STATE=0
for WLAN in $WLANS; do
STATE=$(($STATE << 1))
[ ""$(uci -q get wireless.$WLAN.disabled) == "1" ] && STATE=$(($STATE + 1))
done
STATE=$(($STATE + 1))
MASK=1
for WLAN in $WLANS; do
OLD=$(uci -q get wireless.$WLAN.disabled)
[ OLD == "" ] && OLD="0"
NEW="1"
[ $(($STATE & $MASK)) == "0" ] && NEW="0"
if ! [ $OLD == $NEW ]; then
uci set wireless.$WLAN.disabled="$NEW"
logger -p user.notice -t $SCR "Wireless AP $(uci -q get wireless.$WLAN.ssid) turn $([ "$NEW" == "1" ] && echo "off" || echo "on")"
fi
MASK=$(($MASK << 1))
done
uci commit wireless
wifi
fiDla przykładu posiadam trzy AP
A - Główny dla domowników
B - Hotspot dla gości kumatych:)
C - Hotspot dla gości innych - bardziej ograniczony
Rozpoczynamy od takiego stanu:
A (on), B (on), C (on)
a każda kolejna linia to stan po kolejnym przyciśnięciu przycisku na ruterze:
A (off), B (on), C (on)
A (on), B (off), C (on)
A (off), B (off), C (on)
A (on), B (on), C (off)
A (off), B (on), C (off)
A (on), B (off), C (off)
A (off), B (off), C (off)
A (on), B (on), C (on)
Ten przykładowy skrypt bazuje na przycisku WPS/QSS w moim przypadku (Linksys WRT160NL, TP Link TL-MR3420) widzianym jako BTN_1. Jak rozpoznać przyciski w swoim ruterze doskonale opisał Cezary http://eko.one.pl/?p=openwrt-button
Cezary także opisał http://openrouter.info/forum/viewtopic. … &t=967 jak dodać sieć gościnną.
Tu moje skrypty na GitHub