问题描述
我想从命令行连接到无线访问点。理想情况下,我只需要AP的名称。但是hardware-address也可以工作。
我知道我可以使用nmcli
连接到托管网络连接,但就我而言,可能尚未为Network-Manager配置访问点(请参阅nm-tool
和nmcli con
的输出之间的区别)。
nmcli
的示例输出:
Auto pwln 3a3d62b1-bbdf-4f76-b4d2-c211fd5cfb03 802-11-wireless [...]
Wired Network aa586921-accf-4932-98c4-c873c310f08e 802-3-ethernet [...]
Cisco-UDP Uni 7f94847b-04dc-40b7-9955-5246fb77cc65 vpn [...]
T-mobile (D1) 867f345a-cbbf-4bd4-b883-a5e5ae0932f0 gsm [...]
nm-tool
的示例输出:
State: connected
- Device: eth1 [Auto pwln] ----------------------------------------------------
[...]
Wireless Access Points (* = current AP)
*pwln: Infra, [...], Freq 2472 MHz, Rate 54 Mb/s, Strength 80 WPA WPA2
WLAN: Infra, [...], Freq 2422 MHz, Rate 54 Mb/s, Strength 20 WPA WPA2
[...]
如何连接到NM可能知道或可能不知道的接入点?
附加:找出连接是否需要pass-phrase,并将其提交到命令行上也很好(也就是说,如果network-manager不会弹出打开任何钥匙圈对话框或GUI上的错误,那就太好了)
最佳思路
您可以为此使用cnetworkmanager
。
编辑:
经过一番调查,很明显,不可能同时运行两个“用户配置提供程序”(一个在特定dbus地址上侦听的应用程序),并且cnetworkmanager需要充当”configuration provider”(至少在建立连接之前)向上)。
现在,您可以做的是在/system/networking/connections
项下添加到gconf的连接信息(可以从命令行或脚本执行此操作),然后使用dbus或cnetworkmanager或nmcli之类的命令行工具进行连接。也许您还必须先将密钥添加到用户的密钥环中(以避免弹出密码)。
但是,当然,在使用不同于nm-applet(例如KDE)的NM-client的桌面上,这是行不通的。您还必须弄清楚如何为他们提供配置…
编辑2:
似乎可以通过系统DBus上的org.freedesktop.NetworkManagerUserSettings
来实现,但这在IMO上的文献记录不多。
您可能想了解有关configuration settings和DBus interface spec的信息。
这是a relevant example(虽然您可能想设置用户连接而不是系统连接)
次佳思路
即使尚未在网络管理器中配置连接,也可以使用nmcli
直接执行此操作:
nmcli dev wifi con "myssid" password "myssidpassword"
如果您不想将无线密码存储在最新版本的历史记录中(可能比下面提到的更新),可以添加--ask
以使nmcli提示您缺少所需的信息。
nmcli --ask device wifi connnect "myssid"
此功能是在网络管理器0.9.6中添加的,因此仅在Ubuntu 12.10或更高版本中有效。
您还可以通过以下方式获得可用的接入点列表:
nmcli dev wifi list