我需要将 headless 物联网设备 (Raspberry Pi) 连接到 Wi-Fi 网络。我有使用 YoctoProject 构建的自定义 Linux。我没有安装 connman 或 Network Manager。只有 WPA Supplicant。 我的服务是用 Golang 编写的。
调用 wpa_cli 太棘手且不可靠。 尝试了几个可用的包,我决定自己写一个。 请参阅下面的答案。
最佳答案
回答我自己的问题...
wpa-connect - 用于将 Linux 设备连接到 Wi-Fi 网络 (Golang) 的 API
此软件包是作为 IoT 项目的一部分开发的,目的是为 headless Raspberry Pi 类设备添加 Wi-Fi 连接。无需安装connman 或Network Manager。 wpa-connect 通过 D-Bus(linux 消息总线系统)与 WPA 请求者通信。
Github 仓库 https://github.com/mark2b/wpa-connect
例子 连接到 Wi-Fi 网络
import wifi "github.com/mark2b/wpa-connect"
if conn, err := wifi.ConnectManager.Connect(ssid, password, time.Second * 60); err == nil {
fmt.Println("Connected", conn.NetInterface, conn.SSID, conn.IP4.String(), conn.IP6.String())
} else {
fmt.Println(err)
}
扫描 Wi-Fi 网络
import wifi "github.com/mark2b/wpa-connect"
if bssList, err := wifi.ScanManager.Scan(); err == nil {
for _, bss := range bssList {
print(bss.SSID, bss.Signal, bss.KeyMgmt)
}
}
根据 MIT 许可证发布的包。
关于Golang API 到 WPA 请求方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52139925/