以编程方式连接到Linux中的WiFinetworking

有关Android或iOS的这个function有多个问题,但我正在尝试在Linux上做这个(OpenWrt 15.05是具体的)。 我想扫描无线networking,向用户显示列表,让他们select一个并将用户名/密码发送到networking。

我使用wireless_tools软件包中的iw_scan编写了一个快速C程序,这样我就可以看到无线networking,但是我在尝试确定如何连接到无线networking时遇到了问题。 来自同一个软件包的iwconfig只是修改一个已经存在的连接。

我花了几个小时浏览networking,认为必须有一个包已经这样做了,因为这是一个常见的用例。 任何人都知道吗?

谢谢。

的wpa_supplicant

看看wpa_supplicant包。 它包括wpa_supplicant守护进程,可以通过wpa_cliwpa_gui实用程序或D-Bus API进行控制 。

wicdNetwork Manager这样的程序在内部使用wpa_supplicant


网络管理器

您还可以使用D-Bus API或NetworkManager命令行界面( nmcli )。 它比wpa_supplicant提供了更高层次的抽象。

我已经尝试了一些解决方案,从wicd到网络管理器的cli界面nmcli ,到python的wifi 。 我不想要一个用户界面,我不想要网络管理器,而蟒蛇wifi项目有太多的问题,太复杂了。 所以我写了一个简短的bash脚本来连接到wpa和开放网络(WEP不支持),一个wpa_passphrasewpa_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 

wpa-passphrase文件保存在/etc/wpa-connect ,如果没有提供ESSID,它将自动连接到任何已知的可用网络。 它支持通过macchanger更改iface mac。