在Linux中以编程方式连接WiFi网络

5
这个功能在Android和iOS上有多个问题,但我尝试在Linux(特别是OpenWrt 15.05)上实现此功能。我想扫描无线网络,将列表呈现给用户,让他们选择一个,并将用户名/密码发送到网络。
我使用无线工具包中的iw_scan编写了一个快速的C程序,以便我可以看到无线网络,但我在试图确定如何连接到无线网络时遇到了问题。来自同一软件包的iwconfig似乎只修改已经存在的连接。
我在网上浏览了几个小时,认为已经有一个软件包完成了这个常见的用例。有人知道这样的软件包吗?
谢谢。

嗯,不确定,但是wicd也许对你有用?还有这里 - alesegdia
2个回答

2

wpa_supplicant

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

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


NetworkManager

您也可以使用D-Bus API或命令行界面(nmcli)来管理NetworkManager。它比wpa_supplicant提供更高级别的抽象。


谢谢。我会查看那些工具。 - Wray

0

我尝试了许多解决方案,从wicd、到网络管理器的cli界面nmcli,再到python中的wifi。我不想要一个UI,也不想要网络管理器,而且python 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
wifi-connect -h

WPA密码文件(包括明文密码)被保存在$HOME/.config/wifi-connect中,如果没有提供ESSID,则会自动连接到任何已知的可用网络。它支持通过macchanger更改接口MAC地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接