Shell-Script
連接到最快的開放WiFi(可以訪問網際網路)並繼續尋找如果被切斷?
我知道在安全方面這是一個非常糟糕的主意™️,我同意。(一切都通過 SSL,所以嗯。)
我有一個小型漫遊 Raspberry Pi 驅動的機器人,我想與它保持聯繫。這意味著機器人應該盡最大努力連接到我的伺服器。它有 Wifi,但沒有手機晶片。
我住在技術區,所以有很多“免費 WiFi 只需輸入您的電子郵件或接受我們的 TOS”接入點,因此即使是開放的SSID 也不意味著可用的SSID。
有沒有一種方法(小應用程序或腳本或其他)可以循環遍歷所有開放的訪問點,直到找到一個允許連接到伺服器的訪問點 - 如果它被切斷或吞吐量變得太弱,它將恢復掃描?
我很好地執行 python、bash,無論 raspbian (Debian) 支持什麼。沒有任何連接時的“中斷”是做生意的成本。
我不知道有任何現成的工具可以用於您的目的,但您可以自己建構一個。
Raspbian 上提供了必要的工具和程序。
幸運的是,
wpa-supplicant
允許互動式控制掃描網路和手動連接到網路。具體來說,您可以使用該程序
wpa_cli
或使用c 中的 wpa_ctrl API,這也是wpa_cli
.
wpa_cli
允許您
- 掃描 SSID 並顯示結果:
wpa_cli -i wlan0 SCAN wpa_cli -I wlan0 SCAN_RESULTS
- 獲取有關 SSID 的詳細資訊(包括信號強度、加密等):
wpa_cli -i wlan0 BSS 0
提示:替換
0
為您想了解更多資訊的 SCAN_RESULTS 輸出中的 SSID 的 idx。 3. 連接到符合您條件的特定 SSIDsudo wpa_cli -i wlan0 ADD_NETWORK sudo wpa_cli -i wlan0 SET_NETWORK 0 ssid "SSID" sudo wpa_cli -i wlan0 SET_NETWORK 0 psk "passphrase" sudo wpa_cli -i wlan0 ENABLE_NETWORK 0
注意:替換
0
為之後列印到標準輸出的數字ADD_NETWORK
4. 斷開與 SSID 的連接sudo wpa_cli -i wlan0 DISCONNECT
顯然,您必須對這些命令的輸出進行一些解析。
為了檢查,在連接到 SSID 後是否可以連接到伺服器,您可以簡單地評估 ping 呼叫的結果。
現在你只需要把所有東西放在一起。