Método "laborioso" pero flexible
Comencemos con el método de conexión más versátil de todos, aquel que generalmente más usaremos y que nos permitirá conectaros a cualquier Wifi a la que tengamos acceso (de forma normal, es decir sin "forzar" ninguna contraseña ni recurrir a métodos ilícitos) con la misma flexibilidad que nos ofrecería Network Manager. Para ello se combinan tres herramientas que está instaladas por defecto en el sistema: ifconfig, dhclient, iwlist y iwconfig; las dos últimas solamente podrían usarse en caso de tener instalada alguna tarjeta de red inalámbrica, pero en nuestro caso esto se daría por hecho pues en caso contrario el post carecería de sentido.
Lo primero que tendríamos que hacer sería habilitar nuestra interfaz inalámbrica, la cual probablemente se encuentre por defecto inhabilitada. Esto es tan sencillo como hacer:
ifconfig wlan0 up
En caso de no funcionaros el comando habría que revisar si poseemos los drivers adecuados instalados; una buena forma de comprobar si nuestro sistema detecta adecuadamente nuestros elementos de red; ya sean ethernet o Wifi, sería consultando el fichero /etc/udev/rules.d/70-persistent-net.rules; en caso de aparecer NAME="wlan0", el sistema estaría detectando correctamente la interfaz de red. Con la interfaz de red activa, tendríamos que analizar qué redes tenemos cerca de nuestro equipo, comprobando su ESSID, el cifrado usado, la calidad de la señal, etc... El comando para realizar dicho análisis sería:
iwlist wlan0 scan
El ESSID sería el nombre al que haríamos referencia cuando queremos conectarnos a una red inalámbrica; nombre que dependiendo de si el router ha sido configurado o no, puede tener un nombre intuitivo, o puede tener un nombre como WLAN_... He de suponer que nos conectaremos a una red con una contraseña cifrada (hacer lo contrario sería una imprudencia), con lo que emularemos una conexión a una red en la que es necesario introducir la contraseña.
Supongamos que hemos detectado una red con el ESSID PRIVADO y con la contraseña N03ntr3s3nm1f1f1; para conectarnos a dicha red tendríamos que escribir:
iwconfig wlan0 essid PRIVADO key N03ntr3s3nm1w1f1
Por último, aunque estemos conectados a la red inalámbrica en cuestión, tenemos que solicitarle una ip válida que nos permita navegar y comunicarnos con el resto de elementos de dicha red; es por ello que es necesario usar la herramienta dhclient.
dhclient wlan0
Si somos muy vagos y no queremos hacer el proceso a mano, podemos intentar sintetizar todo lo que hemos visto dentro de un script; un script que dependiendo de nuestro nivel de vagancia, puede ser más completo o no. Una opción podría ser ésta:
- #!/bin/bash
- ifconfig wlan0 up
- iwlist wlan0 scan > /tmp/ESSID.txt
- echo "Escoja un ESSID por favor:"
- cat /tmp/ESSID.txt |grep 'ESSID'
- read SELECCION
- echo "Introduzca la password"
- read CONTRASENA
- iwconfig wlan0 essid ${SELECCION} key ${CONTRASENA} 2&>1 > /dev/null
- if [ $? -eq 0 ];
- then
- dhclient wlan0 2&>1 > /dev/null
- if [ $? -eq 0];
- then
- echo "CONEXION EXITOSA"
- else
- echo "Se ha conectado a la wifi, pero no ha recibido ip"
- fi
- else
- echo "No ha podido establecerse la conexion con: ${SELECCION}. Revise los parametros introducidos"
- fi
- rm/tmp/ESSID.txt
Método sencillo pero orientado a conectase siempre a la misma red
Si en cambio queremos tener todo más orientado a conectarnos siempre a la misma red inalámbrica y queremos optar por alternativas todavía más sencillas que la anterior (aún con el script), podemos optar por usar una herramienta muy útil llamada wpasupplicant, herramienta que si bien no está instalada por defecto en el sistema como ocurría con la alternativa anterior, es muy útil en entornos domésticos o "fijos" en los que sabemos que siempre vamos a conectarnos a la misma red y no queremos ser preguntados por el sistema cada vez que nos queramos conectar a dicha red. Para ello lo primero que necesitaríamos hacer sería instalar la herramienta en cuestión, la cual afortunadamente se encuentra en los repositorios del sistema con lo que simplemente habría que escribir:
apt-get install wpasupplicant
La instalación apenas dura unos segundos, tras los cuales podemos prepararlo todo para que conectarnos automáticamente. Esto lo lograremos gracias al comando wpa_passphrasse, que nos creará una salida de datos que habría que volcar en un fichero de configuración llamado wpa_supplicant.conf, alojado en /etc/wpa_supplicant; usando como base el anterior ESSID y la anterior contraseña, podríamos crear el siguiente ejemplo:
wpa_passphrase PRIVADO N03ntr3s3nm1w1f1 >/etc/wpa_supplicant/wpa_supplicant.conf
Al tener dhclient instalado por defecto en el equipo, y como éste por defecto comprueba la existencia de un fichero wpa_supplicant.conf; durante cada arranque se conectaría automáticamente a la red inalámbrica en caso de que ésta fuese alcanzable; si deseasemos conectarnos manualmente a la red inalámbrica mediante wpa_supplicant, podríamos ejecutar este comando:
wpa_supplicant -B-i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
Podríamos también usar como base el script anterior para hacer que en caso de realizarse una conexión exitosa con una wifi en concreto, tengamos la opción de guardar el ESSID y sus credenciales; algo que quedaría así:
- #!/bin/bash
- ifconfig wlan0 up
- iwlist wlan0 scan > /tmp/ESSID.txt
- echo "Escoja un ESSID por favor:"
- cat /tmp/ESSID.txt |grep 'ESSID'
- read SELECCION
- echo "Introduzca la password"
- read CONTRASENA
- iwconfig wlan0 essid ${SELECCION} key ${CONTRASENA} 2&>1 > /dev/null
- if [ $? -eq 0 ];
- then
- dhclient wlan0 2&>1 > /dev/null
- if [ $? -eq 0];
- then
- echo "CONEXION EXITOSA. Desea guardar las credenciales usadas para futuras conexiones?[s/n]"
- read RESPUESTA
- if [ "$RESPUESTA" == "s" ];
- then
- wpa_passphrase ${SELECCION} ${CONTRASENA} >> /etc/wpa_supplicant/wpa_supplicant.conf
- echo "Credenciales guardadas en el equipo"
- else
- echo "Has seleccionado NO"
- fi
- else
- echo "Se ha conectado a la wifi, pero no ha recibido ip"
- fi
- else
- echo "No ha podido establecerse la conexion con: ${SELECCION}. Revise los parametros introducidos"
- fi
- rm /tmp/ESSID.txt
Con esto tendríamos una solución que combinaría la flexibilidad de iwlist junto con la comodidad de wpa supplicant. Estos scripts han sido testeados en Debian y Ubuntu pero no tendriais que tener problemas en el resto de distribuciones.
Espero que os haya resultado útil.
Saludos.