我需要将无头物联网设备(Raspberry Pi)连接到Wi-Fi网络。我有使用YoctoProject构建的自定义Linux。我没有安装 connman 网络管理器。只有WPA请求者。
我的服务是用Golang编写的。

调用 wpa_cli 太棘手,也不可靠。
尝试一些可用的软件包,我决定编写自己的软件包。
参见下面的答案。

最佳答案

回答我自己的问题...

wpa-connect -用于将Linux设备连接到Wi-Fi网络(Golang)的API

此程序包是作为IoT项目的一部分开发的,目的是为无头Raspberry Pi之类的设备添加Wi-Fi连接。无需安装 connman 网络管理器
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许可证发布的软件包。

09-26 06:45