我知道在安全方面这是一个非常糟糕的主意™️,我同意。(一切都通过 SSL,所以嗯。)
我有一个小型漫游 Raspberry Pi 驱动的机器人,我想与它保持联系。这意味着机器人应该尽最大努力连接到我的服务器。它有 Wifi,但没有手机芯片。
我住在技术区,所以有很多“免费 WiFi 只需输入您的电子邮件或接受我们的服务条款”接入点,因此即使是开放的SSID 也不意味着可用的SSID。
有没有一种方法(小型应用程序或脚本或其他)可以循环遍历所有开放的访问点,直到找到一个允许连接到服务器的访问点 - 如果它被切断或吞吐量变得太弱,它将恢复扫描?
我很好地运行 python、bash,无论 raspbian (Debian) 支持什么。没有任何连接时的“中断”是做生意的成本。
我不知道有任何现成的工具可以用于您的目的,但您可以自己构建一个。
Raspbian 上提供了必要的工具和程序。
幸运的是,
wpa-supplicant
允许交互式控制扫描网络和手动连接到网络。具体来说,您可以使用该程序
wpa_cli
或使用c 中的 wpa_ctrl API,这也是wpa_cli
.wpa_cli
允许您扫描 SSID 并显示结果:
获取有关 SSID 的详细信息(包括信号强度、加密等):
提示:替换
0
为您想了解更多信息的 SCAN_RESULTS 输出中的 SSID 的 idx。连接到符合您条件的特定 SSID
注意:替换
0
为之后打印到标准输出的数字ADD_NETWORK
断开与 SSID 的连接
显然,您必须对这些命令的输出进行一些解析。
为了检查在连接到 SSID 后是否可以连接到您的服务器,您可以简单地评估 ping 调用的结果。
现在你只需要把所有东西放在一起。