方法はいたって簡単で、まず
- 接続したいAPを記述したwap_supplicantファイル
- それを指し示すinterfacesファイル
注意:wpa_supplicantファイルは平文のPSKを含むので、必ずオーナをスーパーユーザにしてオーナ以外の読み出しを禁止すること。
pi@raspberrypi$ sudo cat /etc/wpa_supplicant/wpa_supplicant-my_ssid2.conf network={ ssid="my_ssid2" proto=RSN key_mgmt=WPA-PSK pairwise=TKIP group=TKIP psk="yyyyyyyy" } pi@raspberrypi$ ls -l /etc/wpa_supplicant/wpa_supplicant-my_ssid2.conf -r-------- 1 root root 218 May 20 17:09 /etc/wpa_supplicant/wpa_supplicant-my_ssid2.conf pi@raspberrypi$ sudo cat /etc/network/interfaces.my_ssid2 iface wlan0 inet dhcp wireless-essid my_ssid2 wpa-conf /etc/wpa_supplicant/wpa_supplicant-my_ssid2.conf |
ifdownで現在の接続を終了する。
pi@raspberrypi$ sudo ifdown wlan0 Internet Systems Consortium DHCP Client 4.2.2 Copyright 2004-2011 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wlan0/80:1f:02:86:f6:ef Sending on LPF/wlan0/80:1f:02:86:f6:ef Sending on Socket/fallback DHCPRELEASE on wlan0 to 192.168.0.1 port 67 |
まだデーモンプロセスが動いていると現在の接続を完全に終了できないので、それらを殺し、念のためifconfigでwlan0をディセーブルしてクリーンな状態にする。
pi@raspberrypi$ sudo kill `ps ax | grep wlan0 | grep -v grep| awk '{print $1}'`
pi@raspberrypi$ sudo ifconfig wlan0 down |
あとはwlan0をもう一度イネーブルして、ifupの-iオプションで先ほどのinterfacesファイルを指定してやればOK。
pi@raspberrypi$ sudo ifconfig wlan0 up pi@raspberrypi$ sudo ifup -i /etc/network/interfaces.my_ssid2 wlan0 |
次は、wlan0がAPに接続されていない時にスキャンで得られたAPと自分の知っているAPのリストを照合して自動的に候補のAPにつなぐこと。たぶんシェルスクリプトで可能だと思うが…。