以编程方式连接到Linux中的wifi网络

时间:2015-09-11 19:39:47

标签: linux wifi

关于Android或iOS的此功能存在多个问题,但我尝试在Linux上执行此操作(OpenWrt 15.05具体)。我想扫描无线网络,向用户显示列表,让他们选择一个并将用户名/密码发送到网络。

我使用wireless_tools包中的iw_scan写了一个快速的C程序,所以我可以看到无线网络,但是我在尝试确定如何连接到无线网络时遇到了问题。来自同一个软件包的iwconfig似乎只是修改了现有的连接。

我花了几个小时浏览网页,认为必须有一个已经这样做的软件包,因为它是一个常见的用例。有人知道吗?

感谢。

2 个答案:

答案 0 :(得分:2)

<强>的wpa_supplicant

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

wicdNetwork Manager等程序在内部使用wpa_supplicant

<强>网络管理器

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

答案 1 :(得分:0)

我已尝试过多种解决方案,从wicd到网络管理器的cli接口nmcli,再到python中的wifi。我不想要一个用户界面,我不想要网络管理员,而且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-passphrase文件(包括明文密码)保存在$HOME/.config/wifi-connect中,如果没有提供ESSID,它将自动连接到任何已知的可用网络。它支持通过macchanger更改iface mac地址。