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

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

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

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

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

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

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

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

Изменить 2:

Похоже, что это возможно с помощью org.freedesktop.NetworkManagerUserSettings в системном DBus, но это все плохо документированные IMO …

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

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

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

 nmcli dev wifi con "myssid" password "myssidpassword" 

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

 nmcli --ask device wifi connnect "myssid" 

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

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

 nmcli dev wifi list 

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

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

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

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