Use Network-Manager para conectarse a un punto de acceso WiFi en la línea de comandos

26

Me gustaría conectarme a un punto de acceso inalámbrico desde la línea de comandos. Idealmente, solo necesitaría el nombre de AP. Pero la dirección de hardware también funcionaría.

Sé que puedo usar nmclipara conectarme a una conexión de red administrada, pero en mi caso, el punto de acceso aún no está configurado para Network-Manager (vea la diferencia entre la salida de nm-tooly nmcli con).

Ejemplo de salida 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  [...]

Ejemplo de salida 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

[...]

¿Cómo me conecto a un punto de acceso que NM puede conocer o no?

Extra: averiguar si la conexión necesita una frase de contraseña y enviarla también en la línea de comandos también sería genial (es decir, sería bueno si el administrador de red no abriera ningún diálogo de llavero o errores en la interfaz gráfica de usuario)

Stefano Palazzo
fuente

Respuestas:

6

Puedes usar cnetworkmanagerpara esto.

Editar:

Después de cierta investigación, queda claro que es imposible ejecutar dos "proveedores de configuración de usuario" (una aplicación que escucha en una determinada dirección dbus) al mismo tiempo, y cnetworkmanager debe actuar como tal "proveedor de configuración" (al menos hasta que la conexión está configurada).

Ahora, lo que puede hacer es agregar la información para la conexión a gconf debajo de la /system/networking/connectionsclave (puede hacerlo desde la línea de comandos o un script), y luego usar dbus o una herramienta de línea de comandos como cnetworkmanager o nmcli para conectarse a ella. Tal vez también tenga que agregar la clave al llavero del usuario primero (para evitar ventanas emergentes de contraseña).

Pero, por supuesto, eso no funcionará en un escritorio que use otro cliente NM que no sea nm-applet (por ejemplo, KDE). Tendría que descubrir cómo proporcionar una configuración para ellos también ...

Edición 2:

Parece que podría ser posible a través org.freedesktop.NetworkManagerUserSettingsdel sistema DBus, pero todo esto está mal documentado IMO ...

Es posible que desee leer sobre los ajustes de configuración y las especificaciones de la interfaz DBus .

Y aquí hay un ejemplo relevante (tal vez desee configurar una conexión de usuario en lugar de una conexión del sistema)

JanC
fuente
Todavía nada. Desafortunadamente, cnetworkmanager no funcionará correctamente además del applet networkmanager ("Se está ejecutando otro applet")
Stefano Palazzo
Leí sobre cómo funciona NM & nm-applet y edité mi respuesta.
JanC
11

Puede hacerlo directamente usando nmcli, incluso si la conexión aún no está configurada en Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

Si no desea tener la contraseña inalámbrica almacenada en su historial en versiones recientes (tal vez más nueva que la mencionada a continuación), puede agregarla --askpara que nmcli le solicite la información que falta.

nmcli --ask device wifi connnect "myssid"

Esta instalación se agregó en Network Manager 0.9.6, por lo que solo funciona en Ubuntu 12.10 o posterior.

También puede obtener una lista de puntos de acceso disponibles con:

nmcli dev wifi list
Robie Basak
fuente
conno es reconocido pornmcli dev wifi
kaiser
Qué versión estás usando? Funciona para mí y está documentado como un ejemplo en la página de manual.
Robie Basak
nmcli -ves0.9.4.0
kaiser
Entonces, ¿estás usando 12.04? Como dije en mi respuesta, esto solo funciona en Ubuntu 12.10 o posterior.
Robie Basak
Este podría ser el caso. Me pregunto si podría sudo apt-get updatehacerlo.
kaiser
2

Puede usar iwconfig (wifitools) para el cifrado wep, o wpa_supplicant para wpa y wep, también usa wicd-curses si está buscando algo más fácil, buena suerte =)

chilicuil
fuente
Realmente quiero usar el administrador de red, tal vez a través de dbus. No puedo meterme demasiado con el sistema operativo, ya que el programa que estoy escribiendo no solo se ejecutará en mi propia máquina. Toda la configuración, donde sea posible, debe permanecer sin cambios.
Stefano Palazzo
1

Puede consultar iwconfig e iwlist:

  • iwconfig manipula los parámetros inalámbricos básicos
  • iwlist permite iniciar el escaneo y enumerar frecuencias, tasas de bits, claves de cifrado ...

Hay muchas opciones Consulte Herramientas inalámbricas para Linux para obtener más información.

Fernando Briano
fuente
2
Como dije, me gustaría integrarme con el administrador de red, no reemplazarlo.
Stefano Palazzo