我正在尝试实现一个代码,该代码使用 wpa_cli 和 iw 来配置/添加/删除/测试我的 wpa conf 的新网络条目。
要添加新网络,我的过程是:
wpa_cli list_network
我的新条目已经存在?是的-> 删除它
wpa_cli add_network -> 创建条目为 id 42 的空条目
wpa_cli set_network 42 ssid '"tutu"'
wpa_cli set_network 42 psk '"我的密码"'
wpa_cli 启用 42
wpa_cli 保存配置
-> 使用新条目更新 wpa_conf 文件
wpa_cli 选择网络 42
-> 使用此命令测试连接,仅在 10 秒内每秒检查一次此网络条目,iw dev wlan0 链接结果检查 ssid/psk 信息是否良好。
我不太确定这个过程。而且,似乎某处有缓存。如果我用假 psk 替换现有条目,我总是连接到该条目。
例子 :
我有这样的无线网络设置:ssid:tutu 密码:mypassword
由于我的过程,我添加了配置 tutu/mypassword。在 select_network 之后,iw 链接显示“已连接”。伟大的。
现在我使用相同的过程添加配置 tutu/badpassword。旧的配置被删除。即使新密码错误,select_network 和 iw 链接也始终成功...
编辑 :
我在这里找到了一些很好的信息来验证我的流程:http ://rtl8192cu.googlecode.com/hg-history/bdd3a2265bdd6a92f24cef3d52fa594b2844c9c1/document/wpa_cli_with_wpa_supplicant.pdf
但我总是有些失败。我在 wifi 连接上运行耐力测试。在 100 次具有良好 ssid/psk 的测试中,99 次成功,1 次失败。