使用网络管理器在命令行上连接到 WiFi 接入点

Ste*_*zzo 27 command-line network-manager wireless

我想从命令行连接到无线接入点。理想情况下,我只需要 AP 的名称。但是硬件地址也可以工作。

我知道我可以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  [...]
Run Code Online (Sandbox Code Playgroud)

示例输出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

[...]
Run Code Online (Sandbox Code Playgroud)

如何连接到 NM 可能知道或不知道的接入点?

额外:找出连接是否需要密码,并在命令行上提交它也很棒(也就是说,如果网络管理器不会弹出任何密钥环对话或gui上的错误)

Rob*_*sak 12

您可以直接使用 执行此操作nmcli,即使尚未在网络管理器中配置连接:

nmcli dev wifi con "myssid" password "myssidpassword"
Run Code Online (Sandbox Code Playgroud)

如果您不想在最近的版本(可能比下面提到的更新)中将无线密码存储在您的历史记录中,您可以添加--ask让 nmcli 提示您缺少所需的信息。

nmcli --ask device wifi connnect "myssid"
Run Code Online (Sandbox Code Playgroud)

这个工具是在 Network Manager 0.9.6 中添加的,所以这只适用于 Ubuntu 12.10 或更高版本。

您还可以通过以下方式获取可用接入点列表:

nmcli dev wifi list
Run Code Online (Sandbox Code Playgroud)


Jan*_*anC 6

您可以cnetworkmanager为此使用。

编辑:

经过一番调查,很明显不可能同时运行两个“用户配置提供者”(一个监听某个 dbus 地址的应用程序),而 cnetworkmanager 需要充当这样的“配置提供者”(至少直到连接已建立)。

现在,您可以做的是在/system/networking/connections密钥下添加连接到 gconf 的信息(您可以从命令行或脚本执行此操作),然后使用 dbus 或命令行工具(如 cnetworkmanager 或 nmcli)连接到它。也许您还必须首先将密钥添加到用户的密钥环中(以避免密码弹出窗口)。

但当然,这不适用于使用其他 NM 客户端而不是 nm-applet(例如 KDE)的桌面。您还必须弄清楚如何为他们提供配置...

编辑2:

似乎可以通过org.freedesktop.NetworkManagerUserSettings系统 DBus 来实现,但这在 IMO 中的记录很差...

您可能想了解配置设置DBus 接口规范

这是一个相关的例子(也许你想设置一个用户连接而不是系统连接)