Linux(樹莓派)系統中判斷WiFi是否連接上路由器的方法

之前(https://blog.csdn.net/u010299133/article/details/105823339)介紹過在Linux系統中使用wpa_supplicant連接到指定的WiFi路由器的方法,現在需要判斷是否連接上路由器,以及如何獲取因爲WiFi密碼錯誤造成的無法連接路由器的方法。大致思路是在使用wpa_suppliant工具連接WiFi路由器的時候使用參數(-f )指定一個log文件存放的路徑文件。如:-f /tmp/wpa.log。當執行完wpa_suppliant(sudo wpa_supplicant -B -D wext -f /tmp/wpa.log -c /etc/wpa_suppl.conf -i wlan0)後,會將log信息存放在/tmp/wpa.log中,然後應用程序就打開這個文件並且解析裏面的內容,從而獲取到WiFi的連接狀態。

注意:這種方法的時效性比較差,一般執行完5、6秒鐘後,纔會生成完整的log信息。

正常連接路由器的wpa.log信息:

Successfully initialized wpa_supplicant
rfkill: Cannot get wiphy information
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 9c:a6:15:a0:0d:5a (SSID='TP-LINK' freq=2462 MHz)
Failed to add supported operating classes IE
wlan0: Association request to the driver failed
wlan0: Associated with 9c:a6:15:a0:0d:5a
wlan0: WPA: Key negotiation completed with 9c:a6:15:a0:0d:5a [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 9c:a6:15:a0:0d:5a completed [id=0 id_str=]

從中可以獲取到關鍵信息:wlan0: CTRL-EVENT-CONNECTED - Connection to 9c:a6:15:a0:0d:5a completed [id=0 id_str=]。代表正常連接到路由器。

 

如果WiFi的密碼輸入有誤,那麼wpa.log的信息:

ioctl[SIOCSIWAP]: Operation not permitted
wlan0: CTRL-EVENT-DISCONNECTED bssid=9c:a6:15:a0:0d:5a reason=3 locally_generated=1
ioctl[SIOCSIWAP]: Operation not permitted
wlan0: CTRL-EVENT-TERMINATING 
Successfully initialized wpa_supplicant
rfkill: Cannot get wiphy information
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 9c:a6:15:a0:0d:5a (SSID='TP-LINK' freq=2462 MHz)
Failed to add supported operating classes IE
wlan0: Association request to the driver failed
wlan0: Associated with 9c:a6:15:a0:0d:5a
wlan0: Authentication with 9c:a6:15:a0:0d:5a timed out.
ioctl[SIOCSIWAP]: Operation not permitted
wlan0: CTRL-EVENT-DISCONNECTED bssid=9c:a6:15:a0:0d:5a reason=3 locally_generated=1
wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="TP-LINK" auth_failures=1 duration=10 reason=WRONG_KEY
wlan0: CTRL-EVENT-SSID-REENABLED id=0 ssid="TP-LINK"
wlan0: Trying to associate with 9c:a6:15:a0:0d:5a (SSID='TP-LINK' freq=2462 MHz)
Failed to add supported operating classes IE
wlan0: Association request to the driver failed
wlan0: Associated with 9c:a6:15:a0:0d:5a
wlan0: Authentication with 9c:a6:15:a0:0d:5a timed out.
ioctl[SIOCSIWAP]: Operation not permitted
wlan0: CTRL-EVENT-DISCONNECTED bssid=9c:a6:15:a0:0d:5a reason=3 locally_generated=1
wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="TP-LINK" auth_failures=2 duration=26 reason=WRONG_KEY
wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="TP-LINK" auth_failures=3 duration=36 reason=CONN_FAILED

定位關鍵信息:

wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
或者:
reason=WRONG_KEY

可以發現連不上路由器是因爲密碼的錯誤。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章