Utilizzare Network-Manager per connettersi a un punto di accesso WiFi sulla riga di comando


26

Vorrei connettermi a un punto di accesso wireless dalla riga di comando. Idealmente, avrei solo bisogno del nome dell'AP. Ma anche l'indirizzo hardware funzionerebbe.

So che posso usare nmcliper connettermi a una connessione di rete gestita, ma nel mio caso, il punto di accesso potrebbe non essere ancora configurato per Network-Manager (Vedi la differenza tra l'output di nm-toole nmcli con).

Esempio di output di 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  [...]

Esempio di output di 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

[...]

Come posso connettermi a un punto di accesso che può o non può essere conosciuto da NM?

Extra: scoprire se la connessione ha bisogno di una passphrase e inviarla anche dalla riga di comando sarebbe fantastico (vale a dire sarebbe bello se il gestore della rete non aprisse alcun dialogo di portachiavi o errori sulla gui)

Risposte:


6

Puoi usarlo cnetworkmanagerper questo.

Modificare:

Dopo alcune indagini diventa chiaro che è impossibile eseguire contemporaneamente due "provider di configurazione utente" (un'applicazione in ascolto a un determinato indirizzo dbus) e cnetworkmanager deve agire come tale "provider di configurazione" (almeno fino a quando il connessione impostata).

Ora, ciò che puoi fare è aggiungere le informazioni per la connessione a gconf sotto la /system/networking/connectionschiave (puoi farlo dalla riga di comando o da uno script) e quindi usare dbus o uno strumento da riga di comando come cnetworkmanager o nmcli per connetterti ad esso. Forse dovrai anche aggiungere prima la chiave al portachiavi dell'utente (per evitare i popup delle password).

Ma ovviamente non funzionerà su un desktop che utilizza un altro client NM diverso da nm-applet (ad es. KDE). Dovresti capire come fornire una configurazione anche a loro ...

Modifica 2:

Sembra che potrebbe essere possibile tramite org.freedesktop.NetworkManagerUserSettingsil DBus di sistema, ma questo è tutto IMO scarsamente documentato ...

Potresti voler leggere le impostazioni di configurazione e le specifiche dell'interfaccia DBus .

Ed ecco un esempio pertinente (forse vuoi impostare una connessione utente invece di una connessione di sistema)


Ancora niente. Sfortunatamente, cnetworkmanager non funzionerà correttamente oltre all'applet networkmanager ("È in esecuzione un'altra applet")
Stefano Palazzo

Ho letto come funziona NM & nm-applet e ho modificato la mia risposta.
JanC

11

Puoi farlo direttamente usando nmcli, anche se la connessione non è ancora configurata in Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

Se non vuoi avere la password wireless memorizzata nella tua cronologia nelle ultime versioni (forse più recente di quanto menzionato di seguito) puoi aggiungere --askper fare in modo che nmcli ti chieda le informazioni mancanti di cui ha bisogno.

nmcli --ask device wifi connnect "myssid"

Questa funzione è stata aggiunta in Network Manager 0.9.6, quindi funziona solo con Ubuntu 12.10 o versioni successive.

Puoi anche ottenere un elenco di punti di accesso disponibili con:

nmcli dev wifi list

connon è riconosciuto danmcli dev wifi
kaiser il

Quale versione stai usando? Funziona per me ed è documentato come esempio nella manpage.
Robie Basak,

nmcli -vè0.9.4.0
kaiser,

Quindi stai usando 12.04? Come ho detto nella mia risposta, questo funziona solo su Ubuntu 12.10 o versioni successive.
Robie Basak,

Questo potrebbe essere il caso. Mi chiedo se potrei sudo apt-get updatefarlo.
Kaiser,

2

Puoi usare iwconfig (wifitools) per la crittografia wep, o wpa_supplicant per wpa e wep, inoltre puoi usare wicd-curses se stai cercando qualcosa di più facile, buona fortuna =)


Vorrei davvero usare il gestore di rete, magari via dbus. Non posso scherzare troppo con il sistema operativo, dal momento che il programma che sto scrivendo non funzionerà solo sulla mia macchina. Tutta la configurazione, ove possibile, dovrebbe rimanere invariata.
Stefano Palazzo

1

Puoi dare un'occhiata a iwconfig e iwlist:

  • iwconfig manipola i parametri wireless di base
  • iwlist consente di avviare la scansione e di elencare frequenze, velocità in bit, chiavi di crittografia ...

Ci sono molte opzioni Scopri Wireless Tools per Linux per ulteriori informazioni.


2
Come ho detto, mi piacerebbe integrarmi con il gestore della rete, non sostituirlo.
Stefano Palazzo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.