Используйте Network-Manager для подключения к точке доступа WiFi в командной строке

26

Я хотел бы подключиться к точке беспроводного доступа из командной строки. В идеале, мне нужно только имя 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  [...]

Пример вывода 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?

Дополнительно: выяснить, нужна ли для соединения парольная фраза, и также подать ее в командной строке (то есть было бы неплохо, если бы сетевой менеджер не открывал какие-либо диалоги клавиш или ошибки в графическом интерфейсе)

Стефано Палаццо
источник

Ответы:

6

Вы можете использовать cnetworkmanagerдля этого.

Редактировать:

После некоторого расследования становится ясно, что невозможно одновременно запустить двух «провайдеров конфигурации пользователя» (приложение, прослушивающее определенный адрес dbus), и cnetworkmanager должен выступать в качестве такого «провайдера конфигурации» (по крайней мере, до тех пор, пока соединение установлено).

Теперь, что вы можете сделать, это добавить информацию для подключения к gconf под /system/networking/connectionsключом (вы можете сделать это из командной строки или скрипта), а затем использовать dbus или инструмент командной строки, такой как cnetworkmanager или nmcli, чтобы подключиться к нему. Возможно, вам также придется сначала добавить ключ в связку ключей пользователя (чтобы избежать всплывающих окон).

Но, конечно, это не будет работать на десктопе, который использует другой NM-клиент, чем nm-апплет (например, KDE). Вы должны выяснить, как обеспечить конфиг для них тоже ...

Изменить 2:

Кажется, что это может быть возможно через org.freedesktop.NetworkManagerUserSettingsсистемный DBus, но это все плохо документировано IMO ...

Возможно, вы захотите прочитать о настройках конфигурации и спецификации интерфейса DBus .

А вот соответствующий пример (может быть, вы хотите установить подключение пользователя вместо системного подключения, хотя)

Janc
источник
Еще ничего. К сожалению, cnetworkmanager не будет работать должным образом, кроме апплета networkmanager («Другой апплет работает»)
Стефано Палаццо
Я прочитал о том, как работает NM & nm-applet, и отредактировал свой ответ.
Janc
11

Вы можете сделать это напрямую nmcli, даже если соединение еще не настроено в Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

Если вы не хотите, чтобы пароль беспроводной сети хранился в вашей истории в последних версиях (возможно, новее, чем упомянуто ниже), вы можете добавить, --askчтобы nmcli запрашивала недостающую информацию, в которой она нуждается.

nmcli --ask device wifi connnect "myssid"

Эта возможность была добавлена ​​в Network Manager 0.9.6, поэтому она работает только в Ubuntu 12.10 или более поздней версии.

Вы также можете получить список доступных точек доступа с:

nmcli dev wifi list
Роби Басак
источник
conне распознаетсяnmcli dev wifi
Кайзер
Какую версию ты используешь? Это работает для меня, и задокументировано в качестве примера на странице руководства.
Роби Басак
nmcli -vэто0.9.4.0
Кайзер
Так вы используете 12.04? Как я уже сказал в своем ответе, это работает только в Ubuntu 12.10 или более поздней версии.
Роби Басак
Это может быть так. Интересно, смогу ли я sudo apt-get updateэто.
Кайзер
2

Вы можете использовать iwconfig (wifitools) для шифрования wep или wpa_supplicant для wpa и wep, также вы используете wicd-curses, если вы ищете что-то более простое, удачи =)

chilicuil
источник
Я бы очень хотел использовать сетевой менеджер, возможно, через dbus. Я не могу слишком много возиться с операционной системой, так как программа, которую я пишу, будет работать не только на моей собственной машине. Вся конфигурация, где это возможно, должна оставаться неизменной.
Стефано Палаццо
1

Вы можете проверить iwconfig и iwlist:

  • iwconfig манипулирует основными параметрами беспроводной сети
  • iwlist позволяет запускать сканирование и перечислять частоты, битрейты, ключи шифрования ...

Есть много вариантов. Проверьте Wireless Tools для Linux для получения дополнительной информации.

Фернандо Бриано
источник
2
Как я уже сказал, я хотел бы интегрироваться с сетевым менеджером, а не заменить его.
Стефано Палаццо