1. 程式人生 > >49.Linux-wpa_cli使用之WIFI開啟,掃描熱點,連線熱點,斷開熱點,WIFI關閉(49)

49.Linux-wpa_cli使用之WIFI開啟,掃描熱點,連線熱點,斷開熱點,WIFI關閉(49)

本章學習內容:

  • 1.WIFI如何開啟
  • 2.掃描熱點
  • 3.連線熱點
  • 4. 斷開熱點
  • 5.關閉WIFI
  • 本節使用的是wpa_supplicant工具,它主要包含wpa_supplicant(命令列模式)與wpa_cli(互動模式)兩個程式。

 

1.WIFI如何開啟

ifconfig wlan0 up 
wpa_supplicant -Dnl80211 -i wlan0 -c /data/wpa_supplicant.conf -B
//根據配置檔案/etc/wpa_supplicant.conf來初始化wlan0
//如果wpa_supplicant.conf檔案為空,則不會自動連線,需要連線一次網路才行

 wpa_supplicant.conf檔案的意義:

    用來儲存使用者連線過的WIFI熱點,好處在於,然後每次開啟WIFI時,則會自動根據該檔案來連線熱點

注意: 該檔案儲存的每個熱點都有個priority值,用來系統優先選擇哪個熱點

 

2.掃描熱點

命令如下:

wpa_cli -i wlan0 scan              //掃描附近熱點
wpa_cli -i wlan0 scan_result //列印熱點資訊

效果如下:

 

3.連線熱點

wpa_cli -i wlan0 add_network //
新增一個網路連線,並返回網路ID號,如果wpa_supplicant.conf檔案為空,則返回0,表示第一個熱點,然後該ID號會在連線熱點用到

新增網路連線的意義:

     用來區分使用者連線過的每個熱點


3.1以連線HibyMusic_5G-1為例

wpa_cli -i wlan0 set_network 0 ssid '"HiByMusic_5G-1"'    //設定ID為0的熱點SSID
wpa_cli -i wlan0 set_network 0 psk '"hibymusic1109"'    //設定ID為0的熱點的密碼

PS:如果是沒有加密的公共網路,則輸入以下密碼:

wpa_cli -i wlan0 set_network 0 key_mgmt NONE

繼續輸入:

wpa_cli -i wlan0 set_network 0 priority 2     //設定當前網路優先順序,預設為2
wpa_cli -i wlan0 set_network 0 scan_ssid 1    //設定ssid預設為1即可
wpa_cli -i wlan0 enable_network 0            //啟動連線ID為0的網路

wpa_cli -i wlan0 select_network 0             //選擇網路0(這樣做的好處在於,可以取消先前的其它網路連線)

udhcpc -b -i wlan0 -q    
         //此時只是連線上,所以還要自動分配IP地址,-b:後臺(back) –i:指定介面 –q:獲得續約後退出

如下圖所示:

接下來ping一下:

ping通則可以上網了,其中-I表示指定網絡卡介面

 

 3.2 儲存連線的配置

wpa_cli -i wlan0 save_config    //儲存當前連線的網路配置到wpa_supplicant.conf檔案中,使得下次自動連線

儲存後的wpa_supplicant.conf檔案如下所示:

 

3.3檢視網絡卡當前連線的資訊

wpa_cli -i wlan0 status    //檢視當前網絡卡是處於什麼狀態

列印如下:

 

wpa_cli -i wlan0 list_network    //檢視當前連線的是哪個網路

列印如下,可以看到當前連線的ID號為0:

 

 

4.斷開熱點

wpa_cli -i wlan0 disable_network 0    //與id0的網路進行斷開
wpa_cli -i wlan0 remove_network 0     //將id0的網路移除掉,必須先斷開才行
wpa_cli -i wlan0 save_config          //並更新wpa_supplicant.conf檔案

配置後的wpa_supplicant.conf檔案如下所示:

 

 

5.關閉WIFI

killall udhcpc > /dev/null
killall wpa_supplicant > /dev/null
ifconfig wlan0 down