Użyj Menedżera sieci, aby połączyć się z punktem dostępu Wi-Fi w wierszu polecenia

26

Chciałbym połączyć się z bezprzewodowym punktem dostępowym z wiersza poleceń. Idealnie, potrzebowałbym tylko nazwy AP. Ale adres sprzętowy również by działał.

Wiem, że mogę używać nmclido łączenia się z zarządzanym połączeniem sieciowym, ale w moim przypadku punkt dostępu może nie zostać jeszcze skonfigurowany dla Network-Managera (zobacz różnicę między danymi wyjściowymi nm-toola nmcli con).

Przykładowe dane wyjściowe 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  [...]

Przykładowe dane wyjściowe 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

[...]

Jak połączyć się z punktem dostępu, który może być nieznany NM?

Dodatkowo: Sprawdzanie, czy połączenie wymaga hasła, i przesłanie go również w wierszu polecenia byłoby również świetne (to znaczy, że byłoby miło, gdyby menedżer sieci nie otworzył żadnych okien dialogowych kluczy lub błędy w GUI)

Stefano Palazzo
źródło

Odpowiedzi:

6

Możesz cnetworkmanagerdo tego użyć .

Edytować:

Po pewnym dochodzeniu staje się jasne, że nie jest możliwe jednoczesne uruchomienie dwóch „dostawców konfiguracji użytkownika” (aplikacja nasłuchująca pod określonym adresem dbus), a cnetworkmanager musi działać jako „dostawca konfiguracji” (przynajmniej do czasu połączenie jest skonfigurowane).

Teraz możesz dodać informacje o połączeniu z gconf pod /system/networking/connectionskluczem (możesz to zrobić z wiersza poleceń lub skryptu), a następnie użyć dbus lub narzędzia wiersza polecenia, takiego jak cnetworkmanager lub nmcli, aby się z nim połączyć. Być może będziesz musiał najpierw dodać klucz do kluczy użytkownika (aby uniknąć wyskakujących haseł).

Ale oczywiście nie zadziała to na pulpicie, który używa innego klienta NM niż nm-applet (np. KDE). Trzeba też wymyślić, jak zapewnić dla nich konfigurację ...

Edycja 2:

Wydaje się, że jest to możliwe org.freedesktop.NetworkManagerUserSettingsw systemie DBus, ale to wszystko jest źle udokumentowane IMO ...

Możesz przeczytać o ustawieniach konfiguracji i specyfikacji interfejsu DBus .

Oto odpowiedni przykład (być może chcesz skonfigurować połączenie użytkownika zamiast połączenia systemowego)

JanC
źródło
Wciąż nic. Niestety cnetworkmanager nie będzie działał poprawnie oprócz apletu menedżera sieci („Uruchomiony jest inny aplet”)
Stefano Palazzo
Przeczytałem o działaniu apletu NM i nm i zredagowałem swoją odpowiedź.
JanC
11

Możesz to zrobić bezpośrednio nmcli, nawet jeśli połączenie nie jest jeszcze skonfigurowane w Network Managerze:

nmcli dev wifi con "myssid" password "myssidpassword"

Jeśli nie chcesz, aby hasło sieci bezprzewodowej było przechowywane w historii w najnowszych wersjach (być może nowszych niż wymienione poniżej), możesz dodać, --askaby nmcli pytał o brakujące informacje, których potrzebuje.

nmcli --ask device wifi connnect "myssid"

Ta funkcja została dodana w Network Manager 0.9.6, więc działa tylko w Ubuntu 12.10 lub nowszym.

Możesz również uzyskać listę dostępnych punktów dostępowych za pomocą:

nmcli dev wifi list
Robie Basak
źródło
connie jest rozpoznawany przeznmcli dev wifi
kaiser
Jakiej wersji używasz? To działa dla mnie i zostało udokumentowane jako przykład na stronie podręcznika.
Robie Basak,
nmcli -vjest0.9.4.0
kaiser
Więc używasz 12.04? Jak powiedziałem w mojej odpowiedzi, działa to tylko na Ubuntu 12.10 lub nowszym.
Robie Basak,
Może tak być. Zastanawiam się, czy mógłbym sudo apt-get updateto zrobić.
kaiser
2

Możesz użyć iwconfig (wifitools) do szyfrowania WEP lub wpa_supplicant dla WPA i WEP, a także używasz wicd-curses, jeśli szukasz czegoś łatwiejszego, powodzenia =)

chilicuil
źródło
Naprawdę chciałbym użyć menedżera sieci, może przez dbus. Nie mogę za bardzo zadzierać z systemem operacyjnym, ponieważ program, który piszę, nie będzie działał tylko na moim komputerze. Cała konfiguracja, jeśli to możliwe, powinna pozostać niezmieniona.
Stefano Palazzo
1

Możesz sprawdzić iwconfig i iwlist:

  • iwconfig manipuluje podstawowymi parametrami sieci bezprzewodowej
  • iwlist pozwala inicjować skanowanie i wyświetlać częstotliwości, przepływności, klucze szyfrowania ...

Istnieje wiele opcji. Więcej informacji znajdziesz w Wireless Tools for Linux .

Fernando Briano
źródło
2
Jak powiedziałem, chciałbym zintegrować się z menedżerem sieci, a nie zastąpić go.
Stefano Palazzo