autoConnectWiFi






Скрипт для автоматической настройки Wi-Fi подключения в Debian


Во время постоянного переключения между различными точками доступа к беспроводной сети приходиться постоянно изменять настройки сетевого интерфейса, комментируя старые и внося новые параметры подключения. Для таких ситуаций в файле настроек сетевого интерфейса предусмотрена директива mapping, которая предусматривает передачу выбора сетевых настроек внешнему скрипту. Вот пример файла interfaces, использующий такую технику:

auto wlan0
mapping wlan0
script /usr/local/sbin/wlan-detect.sh
map OfficeAP wlan0-office
map HomeAP wlan0-home
 
iface wlan0-home inet dhcp
wpa-ssid HomeAP
wpa-bssid 01:23:45:67:89:AB
wpa-psk HomePassphrase
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
 
iface wlan0-office inet dhcp
wpa-ssid OfficeAP
wpa-bssid CD:EF:01:23:45:67
wpa-psk OfficePassphrase
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN

Таким образом, право выбора сетевой конфигурации переложено на скрипт /usr/local/sbin/wlan-detect.sh. В документации описано, что он должен принимать имя интерфейса как аргумент и пары "ключ-значение" из директивы map в порядке их следования. Поскольку в примере привязка к имени точки доступа, то следует следить, чтобы ключ в директиве map совпадал с параметром wpa-ssidсоответстующего интерфейса. Сам скрипт приведен ниже:

#!/bin/sh
 IFACE=
"$1"
CTRL_SOCKET=
"/var/run/wpa_supplicant"
 
# We cannot perform AP scanning until interface is down. Bring up wlan interface
# with wpa_supplicant and wait a little.
wpa_supplicant
-i $IFACE -C $CTRL_SOCKET &
PID=$!
sleep 5
 SCAN_RESULT=`
mktemp`
iwlist $IFACE scan
> $SCAN_RESULT
 
# Simple check of scanning results. Script stops searching when first AP is
# found.
while read SSID IFACE_ALIAS ; do
if ( grep "ESSID:\"$SSID\"" $SCAN_RESULT > /dev/null ) ; then
echo $IFACE_ALIAS
break
fi

done
 
# Some cleanup before exit.
kill $PID
rm $SCAN_RESULT
exit 0

В качестве альтернативы данному скрипту можно использовать essidscan из пакета
ifscheme.



auto wlan1
mapping wlan1
script /usr/local/sbin/wlan-detect.sh
map Stargate wlan1-nomy
map -=512=- wlan1-my

iface wlan1-my inet dhcp
wpa-ssid -=512=-
wpa-bssid 92:B1:44:D0:56:09
wpa-psk 72319tux
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN

iface wlan1-nomy inet dhcp
wpa-ssid Stargate
wpa-bssid 98:0D:67:A5:4A:D8
wpa-psk qwe123qwe
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN














Содержание