簡介
wpa_supplicant
是一個連接、配置WIFI
的工具,它主要包含wpa_supplicant
與wpa_cli
兩個程序。通常情況下,可以通過wpa_cli
來進行WIFI
的配置與連接,如果有特殊的需要,可以編寫應用程序直接調用wpa_supplicant
的接口直接開發。
啟動wpa_supplicant
應用
$ wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
/etc/wpa_supplicant.conf
文件里,添加下面代碼:
ctrl_interface=/var/run/wpa_supplicant update_config=1
啟動wpa_cli
應用
$ wpa_cli -i wlan0 scan // 搜索附近wifi網絡 $ wpa_cli -i wlan0 scan_result // 打印搜索wifi網絡結果 $ wpa_cli -i wlan0 add_network // 添加一個網絡連接
如果要連接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]
(wpa
加密),wifi
名稱是name
,wifi
密碼是:psk
。
$ wpa_cli -i wlan0 set_network 0 ssid '"name"' $ wpa_cli -i wlan0 set_network 0 psk '"psk"' $ wpa_cli -i wlan0 enable_network 0
如果要連接加密方式是[WEP][ESS]
(wep
加密),wifi
名稱是name
,wifi
密碼是psk
。
$ wpa_cli -i wlan0 set_network 0 ssid '"name"' $ wpa_cli -i wlan0 set_network 0 key_mgmt NONE $ wpa_cli -i wlan0 set_network 0 wep_key0 '"psk"' $ wpa_cli -i wlan0 enable_network 0
如果要連接加密方式是[ESS]
(無加密),wifi
名稱是name
。
$ wpa_cli -i wlan0 set_network 0 ssid '"name"' $ wpa_cli -i wlan0 set_network 0 key_mgmt NONE $ wpa_cli -i wlan0 enable_network 0
分配ip/netmask/gateway/dns
$ udhcpc -i wlan0 -s /etc/udhcpc.script -q
執行完畢,就可以連接網絡了。
保存連接
$ wpa_cli -i wlan0 save_config
斷開連接
$ wpa_cli -i wlan0 disable_network 0
連接已有的連接
$ wpa_cli -i wlan0 list_network 列舉所有保存的連接 $ wpa_cli -i wlan0 select_network 0 連接第1個保存的連接 $ wpa_cli -i wlan0 enable_network 0 使能第1個保存的連接
斷開wifi
$ ifconfig wlan0 down
$ killall udhcpc
$ killall wpa_supplicant
查看網絡連接狀態
wpa_cli -i wlan0 status
創建配置文件
wpa_supplicant連接WIFI的時候會從配置文件中讀取賬號和密碼,以及加密方式等, 所以我們再運行wpa_supplicant工具的時候要提前寫好配置文件。
配置文件名稱自定,但是要以 .conf 為后綴,並保存在 /etc/ 目錄下,這邊給出一個配置文件的例子。
ctrl_interface=/var/run/wpa_supplicant # 一個目錄,用於wpa_supplicant和wpa_cli的socket通信 network={ ssid="dswei" #WIFI名稱 proto=WPA # proto: list of accepted protocols, 可取WPA,RSN # 如果沒有設置,默認為: WPA RSN key_mgmt=WPA-PSK # 認證方式 # 如果沒有設置,默認為: WPA-PSK WPA-EAP pairwise=TKIP # 如果沒有設置,默認為: CCMP TKIP group=TKIP # 如果沒有設置,默認為: CCMP TKIP WEP104 WEP40 psk="a123654" # WIFI密碼 }
在一般使用中我們只要設置ssid和psk,其他全部使用默認的,就可以連接上WIFI。