Select Page

wpa_cli 是一個用於與 wpa_supplicant 交互的命令行界面工具,當然也支持在 command line 下直接使用命令控制 WIFI,可以用來管理無線網絡接口的設定和運行狀態。這個工具非常強大,支持多種操作,如掃描無線網絡、連接到網絡、變更設定等,而我都用python 透過 wpa_cli 來控制 WIFI。

首先掃描無線網路

打開終端,並且記得要用 root 權限來執行 wpa_cli

sudo wpa_cli -i wlan1 scan
sleep 5  # 給予一些時間來完成掃描
sudo wpa_cli -i wlan1 scan_results

回應如下圖

加一個網路配置

利用 ssid 和 paswword 來連線到一個已知的無線網路上,可以將下面的指令編寫成 wpa_cli_add_network.sh ,並且執行她,也可以直接使用,執行後取得的 network id 通常是一個 int 的數字,把她記起來,之後就可以透過這個 network id 來連接網路,和斷開網路

# 添加新的網絡配置
network_id=$(wpa_cli -i wlan1 add_network | awk '{print $NF}')

# 設置SSID和密碼
wpa_cli -i wlan1 set_network $network_id ssid '"你的SSID"'
wpa_cli -i wlan1 set_network $network_id psk '"你的密碼"'

# 啟用該網絡
wpa_cli -i wlan1 enable_network $network_id

# 保存配置
wpa_cli -i wlan1 save_config

連接網路以及斷開網路

# 重新連線
wpa_cli -i wlan1 reconnect

#斷開連線
wpa_cli -i wlan1 disconnect

刪除網路配置

wpa_cli -i wlan1 remove_network $network_id

檢查連線是否存在

wpa_cli -i wlan1 status

得到的輸出通常如下

其中,檢查是否有連線成功,可以看 wpa_state 是否為 COMPLETED

檢查已經存在的網路設定

sudo wpa_cli -i wlan1 list_networks

輸出如下

可以用 flags CURRENT 來檢查現在是連線到那一個 network ,也可以取得 network id ,並且用他來連線