一:簡要說明
? ? ? ? 交叉編譯wpa_supplicant工具后會有wpa_supplicant和wpa_cli兩個程序生產,如果知道需要連接的wifi熱點及密碼的話不需要遍歷及查詢所有wifi熱點的名字及信號強度等信息的話,使用wpa_supplicant即可,否則還需要使用wpa_cli來查詢遍歷wifi熱點及配網。
? ? ? ??wpa_cli不能單獨使用,需要先啟動wpa_supplicant后在運行wpa_cli,因為wpa_supplicant作為服務端,wpa_cli作為客戶端需要訪問wpa_supplicant
二:加載無線網卡驅動
? ? ? ? WiFi的掃描及配網本質是網卡驅動實現的,所以必須先加載網卡驅動
????????insmod cfg80211.ko
????????insmod rtl8733bu.ko
????????mkdir /tmp/wpa_supplicants? ?這個是wpa_supplicants的運行路徑,wpa_supplicants的配置文件會指定ctrl_interface 到這里,默認是/var/run/wpa_supplicants
三:掃描遍歷wifi熱點及配網
? ? ? ? ? ?1 : ./wpa_supplicant ?-i wlan0 -c wpa_supplicant.conf ?-B
? ? ? ? ? ? ? ? ?wpa_supplicant.conf 配置如下
ctrl_interface=/tmp/wpa_supplicants
update_config=1
? ? ? ? 2:? ?掃描WiFi熱點
????????./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants ?scan?? ? ?
? ? ? ? 注意1:如果沒有加-p指定 wpa_supplicants路徑,則會提示下面錯誤,因為默認路徑為
????????/var/run/wpa_supplicant,或者將配置中的/tmp/wpa_supplicants改成/var/run/wpa_supplicant則無此問題不用-p參數
? ? ? ?Failed to connect to non-global ctrl_ifname: wlan0 ?error: No such file or directory
????????注意2:
????????scan掃描過程需要一定的時間,掃描過程中將使wpa_supplicant處于busy狀態,再次發送scan掃描將失敗
????????
? ? ?3:查看掃描結果
? ? ?./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants scan_results
? ? ?注意:
????????scan_results打印出來的是可獲得的wifi的列表,列表包含WiFi熱點的ssid(名稱)、bssid(mac地址)、signal level(信號強度,單位dBm)、flags(加密類型)等。
????????
? ? ? ? 4:連接wifi熱點
? ? ? ? ? ? ? ? 4.1:增加一個網絡id,后面根據這個網絡編號來配置wifi熱點,我這里得到的編號為0
????????????????./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants add_network
????????????????
? ? ? ? ? ? ? ? 4.2:配置wifi熱點的名字ssid
????????????????????????./wpa_cli -i wlan0 -p /tmp/wpa_supplicants ?set_network 網絡編號?ssid '"wifi名字'
? ? ? ? ? ? ? ? ? ? ? ? eg:./wpa_cli -i wlan0 -p /tmp/wpa_supplicants ?set_network 0 ssid '"hfzuo"'
? ? ? ? ? ? ? ? 4.3: 配置wifi熱點的密碼psd
????????????????????????./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 網絡編號?psk '"密碼"'??
? ? ? ? ? ? ? ? ? ? ? ? eg:./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 0 psk '"88888888"'
? ? ? ? ? ? ? ? 4.4 查看網絡列表
????????????????????????./wpa_cli -i wlan0 -p /tmp/wpa_supplicants ?list_network
? ? ? ? ? ? ? ? 4.5 選擇網絡
????????????????????????./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants ?select_network 網絡編號
? ? ? ? ? ? ? ? ? ? ? ? eg:./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants ?select_network 0
? ? ? ? ? ? ? ? 4.6 請求動態分配IP
????????????????????????udhcpc -i wlan0 &
? ? ? ? ? ? ? ? 4.7 查看wifi狀態
????????????????????????./wpa_cli -i wlan0 ?-p /tmp/wpa_supplicants ?status
? ? ? ? ? ? ? ? 4.8 保存wifi熱點信息
?????????????????./wpa_cli -i wlan0 -p /tmp/wpa_supplicants save_config
? ? ? ? ? ? ? ? 保存的wifi熱點信息到配置文件/etc/wpa_supplicant.conf 里了
? ? ? ? ? ? ? ? 下次直接運行./wpa_supplicant ?-i wlan0 -c /etc/wpa_supplicant.conf ?-B 既可自動連上hfzuo的熱點
????????????????wpa_supplicant.conf 內容如下
????????????????
ctrl_interface=/tmp/wpa_supplicants
update_config=1
network={
ssid="hfzuo"
psk="88888888"
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}
四:其他未測試驗證的命令
? ? ? ? 1:停止使用wifi熱點(此時還連載wifi熱點,只是沒有激活使用)
????????wpa_cli -i wlan0 disable_network 網絡編號?
? ? ? ? 2:使能wifi熱點
????????wpa_cli -i wlan0 enable_network 網絡編號
? ? ? ? 3:斷開wifi熱點
????????wpa_cli -i wlan0 disconnect
? ? ? ? 4:重連wifi熱點
????????wpa_cli -i wlan0 reconnect
? ? ? ? 5:刪除wifi熱點
????????wpa_cli -i wlan0 remove_network 網絡編號
????????? ? ? ? ? ? ? ??
????????
????????