圍紀實驗室

wpa_cli & wpa_supplicant[]

在 Ubuntu 11.04 须做 这个网页上写的修改,才能使 wpa_cli 可以和 wpa_supplicant 通讯。
修改完后,要 reboot Ubuntu OS,然后就可以用这个网页讲的wpa_cli command line了:

sudo wpa_cli -p /var/run/wpa_supplicant -i wlan0 <command ...>


以下是我用 VIA Epia 连接公司光世代 VDSL modem (SSID="hi") 的命令:

sudo wpa_cli -p /var/run/wpa_supplicant -i wlan6 list_networks
sudo wpa_cli add_network
sudo wpa_cli set_network 0 ssid '"hi"'
sudo wpa_cli set_network 0 scan_ssid 1
sudo wpa_cli set_network 0 key_mgmt WPA-PSK
sudo wpa_cli set_network 0 psk '"537xyz63"'
sudo wpa_cli enable_network 0
sudo dhclient3 wlan6
### double-check wlan settings ###
sudo wpa_cli -p /var/run/wpa_supplicant -i wlan6 list_networks
iwconfig wlan6
ifconfig wlan6


Note 1: 虽然在 Windows 7 上查看,VDSL modem 的 WiFi 加密是采用 WPA2-Personal w/ AES encryption,但wpa_cli command line 的 key_mgmt 参数仍是下 WPA-PSK:

wpa_cli set_network 0 key_mgmt WPA-PSK


Note 2: 如果把上面的 command lines 写成 bash script, 并用 command line arguments $1 与 $3 传 SSID 和 PSK key 的话,在 script 里面,相对应的 command lines 要写成:

sudo wpa_cli set_network 0 ssid '"'$1'"'
sudo wpa_cli set_network 0 psk '"'$3'"'

要注意的是:位置变数 $1 和 $3 的周围,要用单引号包住。