关于Android或iOS的此功能存在多个问题,但我尝试在Linux上执行此操作(OpenWrt 15.05具体)。我想扫描无线网络,向用户显示列表,让他们选择一个并将用户名/密码发送到网络。
我使用wireless_tools包中的iw_scan写了一个快速的C程序,所以我可以看到无线网络,但是我在尝试确定如何连接到无线网络时遇到了问题。来自同一个软件包的iwconfig似乎只是修改了现有的连接。
我花了几个小时浏览网页,认为必须有一个已经这样做的软件包,因为它是一个常见的用例。有人知道吗?
感谢。
答案 0 :(得分:2)
<强>的wpa_supplicant 强>
查看wpa_supplicant包。它包含wpa_supplicant
守护程序,可通过wpa_cli
和wpa_gui
实用程序或D-Bus API进行控制。
wicd
和Network Manager
等程序在内部使用wpa_supplicant
。
<强>网络管理器强>
您还可以D-Bus API使用NetworkManager
或命令行界面(nmcli
)。它提供了比wpa_supplicant
更高级别的抽象。
答案 1 :(得分:0)
我已尝试过多种解决方案,从wicd
到网络管理器的cli接口nmcli
,再到python中的wifi。我不想要一个用户界面,我不想要网络管理员,而且python wifi项目太复杂了,我遇到了一些问题。所以我写了一个简短的bash脚本,用于连接到wpa和开放网络(不支持WEP),wpa_passphrase
和wpa_supplicant
上的包装:
sudo apt-get install -y wireless-tools wpasupplicant expect macchanger
sudo wget -O /usr/local/bin/wifi-connect https://raw.githubusercontent.com/erjoalgo/erjoalgo-gnu-scripts/master/wifi-connect
sudo chmod +x /usr/local/bin/wifi-connect
wifi-connect -e Internet -p my-password
wifi-connect -h
wpa-passphrase文件(包括明文密码)保存在$HOME/.config/wifi-connect
中,如果没有提供ESSID,它将自动连接到任何已知的可用网络。它支持通过macchanger更改iface mac地址。