Utilisez Network-Manager pour vous connecter à un point d'accès WiFi sur la ligne de commande

26

Je souhaite me connecter à un point d'accès sans fil à partir de la ligne de commande. Idéalement, je n'aurais besoin que du nom de l'AP. Mais l'adresse matérielle fonctionnerait également.

Je sais que je peux utiliser nmclipour me connecter à une connexion réseau gérée, mais dans mon cas, le point d'accès n'est peut-être pas encore configuré pour Network-Manager (voir la différence entre la sortie de nm-toolet nmcli con).

Exemple de sortie de 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  [...]

Exemple de sortie de 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

[...]

Comment me connecter à un point d'accès connu ou non de NM?

Extra: Découvrir si la connexion a besoin d'une phrase de passe et la soumettre également sur la ligne de commande serait également très bien (c'est-à-dire que ce serait bien si le gestionnaire de réseau n'ouvrait aucune boîte de dialogue de trousseau de clés ou erreurs sur le gui)

Stefano Palazzo
la source

Réponses:

6

Vous pouvez utiliser cnetworkmanagerpour cela.

Modifier:

Après une enquête, il devient clair qu'il est impossible d'exécuter deux "fournisseurs de configuration utilisateur" (une application écoutant à une certaine adresse dbus) en même temps, et cnetworkmanager doit agir en tant que "fournisseur de configuration" (au moins jusqu'à ce que le connexion est établie).

Maintenant, ce que vous pouvez faire est d'ajouter les informations pour la connexion à gconf sous la /system/networking/connectionsclé (vous pouvez le faire à partir de la ligne de commande ou d'un script), puis utilisez dbus ou un outil de ligne de commande comme cnetworkmanager ou nmcli pour vous y connecter. Vous devrez peut-être également ajouter la clé au trousseau de clés de l'utilisateur en premier (pour éviter les fenêtres contextuelles de mot de passe).

Mais bien sûr, cela ne fonctionnera pas sur un bureau qui utilise un autre client NM que nm-applet (par exemple KDE). Il faudrait aussi trouver comment leur fournir une configuration ...

Modifier 2:

Il semble que cela pourrait être possible via org.freedesktop.NetworkManagerUserSettingsle système DBus, mais tout cela est mal documenté IMO ...

Vous voudrez peut-être en savoir plus sur les paramètres de configuration et les spécifications de l'interface DBus .

Et voici un exemple pertinent (peut-être que vous souhaitez configurer une connexion utilisateur au lieu d'une connexion système)

JanC
la source
Toujours rien. Malheureusement, cnetworkmanager ne fonctionnera pas correctement en plus de l'applet networkmanager ("Une autre applet est en cours d'exécution")
Stefano Palazzo
J'ai lu comment NM & nm-applet fonctionne et j'ai modifié ma réponse.
JanC
11

Vous pouvez le faire directement en utilisant nmcli, même si la connexion n'est pas encore configurée dans Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

Si vous ne souhaitez pas que le mot de passe sans fil soit stocké dans votre historique dans les versions récentes (peut-être plus récentes que celles mentionnées ci-dessous), vous pouvez ajouter --askpour que nmcli vous demande les informations manquantes dont il a besoin.

nmcli --ask device wifi connnect "myssid"

Cette fonctionnalité a été ajoutée dans Network Manager 0.9.6, donc cela ne fonctionne que dans Ubuntu 12.10 ou version ultérieure.

Vous pouvez également obtenir une liste des points d'accès disponibles avec:

nmcli dev wifi list
Robie Basak
la source
conn'est pas reconnu parnmcli dev wifi
kaiser le
Quelle version utilisez-vous? Cela fonctionne pour moi et est documenté comme exemple dans la page de manuel.
Robie Basak
nmcli -vest0.9.4.0
kaiser
Vous utilisez donc 12.04? Comme je l'ai dit dans ma réponse, cela ne fonctionne que sur Ubuntu 12.10 ou version ultérieure.
Robie Basak
Ce pourrait être le cas. Je me demande si je pouvais sudo apt-get update.
kaiser
2

Vous pouvez utiliser iwconfig (wifitools) pour le chiffrement wep, ou wpa_supplicant pour wpa et wep, vous pouvez également utiliser wicd-curses si vous cherchez quelque chose de plus simple, bonne chance =)

chilicuil
la source
Je voudrais vraiment utiliser le gestionnaire de réseau, peut-être via dbus. Je ne peux pas trop me soucier du système d'exploitation, car le programme que j'écris ne fonctionnera pas uniquement sur ma propre machine. Dans la mesure du possible, toute la configuration doit rester inchangée.
Stefano Palazzo
1

Vous pouvez consulter iwconfig et iwlist:

  • iwconfig manipule les paramètres sans fil de base
  • iwlist permet d'initier le scan et de lister les fréquences, les débits binaires, les clés de cryptage ...

Il existe de nombreuses options. Consultez les outils sans fil pour Linux pour en savoir plus.

Fernando Briano
la source
2
Comme je l'ai dit, j'aimerais m'intégrer au gestionnaire de réseau, pas le remplacer.
Stefano Palazzo