jueves, 16 de febrero de 2012

wmii: Introducción e instalación (I)

Tutorial wmii:
  1. wmii: Introducción e instalación (I)
  2. wmii: Configuración y comandos de uso básico (II)
  3. wmii: Trucos avanzados (III)
En la entrada anterior he hablado de los distintos tipos de gestores de ventanas, de la no obligatoriedad de instalar un entorno de escritorio completo y de las posibles ventajas que puede tener el optar por instalar un gestor de ventanas ligero por sí sólo en sistemas Linux.

En esta entrada comienzo un pequeño tutorial sobre un gestor de ventanas concreto del tipo mosaico (las ventanas no se superponen; ocupan, cada una, una división de la pantalla, como un mosaico): wmii.

En esta primera parte del tuto nombraré sus características y la forma de instalarlo. Se trata del gestor que utilizo en mi portátil, y me gustaría darlo a conocer, ya que incorpora una manera de trabajar con el ordenador bastante diferente al paradigma de escritorio con ventanas rollo Windows/Mac/Ubuntu (es decir, gestores de ventanas de pila). A mi parecer se trabaja mucho más cómoda y rápidamente que con dicho paradigma, una vez te habitúas a la forma de utilizarlo, cosa que tampoco requiere ni mucho esfuerzo ni mucho tiempo. Pero eso ya son gustos y preferencias de cada uno, por lo menos es bueno saber que existen estas opciones.

Lo primero: ¿En qué se diferencian los gestores de ventanas tipo mosaico de los de tipo pila (Windows/Mac/Ubuntu)? 

Básicamente en los de tipo pila tenemos una serie de ventanas en el escritorio las cuales pueden perfectamente superponerse y taparse las unas a las otras, en cuyo caso sólo se muestra completamente en la pantalla la ventana que tengamos activa en este momento. Las ventanas se pueden redimensionar cada una por separado, maximizar, minimizar...

En los de tipo mosaico, por el contrario, las ventanas no se tapan unas a otras, sino que cada una tiene su espacio rectangular en la pantalla, que ocupa completamente. Se pueden redimensionar, lo que hará que al disminuir el espacio dedicado para una ventana, aumente el de la ventana de al lado y viceversa, ya que no quedan huecos en la pantalla. Según el gestor de ventanas que utilicemos, existirán también opciones de maximizar para que una ventana ocupe la pantalla completa temporalmente, y opciones similares.

Tipo pila
Tipo mosaico
Pequeña introducción a wmii

Las columnas

Dos columnas en wmii
(Pinchar para aumentar)
En el caso particular de wmii, las ventanas se organizan en columnas. Si sólo tenemos una ventana abierta, tendremos una sola columna cuyo ancho será el de toda la pantalla. A partir de tener dos ventanas abiertas, podemos (si lo deseamos) mover cualquiera de ellas hacia un lado y formar con ello una nueva columna. De esa manera el ancho de la pantalla ahora quedará dividido entre las dos columnas que tengamos, como se puede ver en la imagen de la izquierda.



El ancho dedicado a cada una de estas nuevas columnas podemos variarlo fácilmente pinchando y moviendo hacia los lados la línea que las separa. Si tenemos más ventanas y queremos más columnas, el proceso es el mismo, podemos tener el número de columnas que queramos, y en cada columna las ventanas que queramos. Si movemos la última ventana de una columna a otra, la columna que queda vacía se elimina al instante.

Una vez estamos en una misma columna con varias ventanas, tenemos 3 modos diferentes o disposiciones de gestionar cómo aparecen en ella, entre los cuales podemos cambiar fácilmente según nuestras necesidades de cada momento:

Disposición default con una sola
columna
  • Disposición default: Esta disposición organiza todas las ventanas de la columna en una fila cada una, de la misma altura inicialmente pero pudiendo cambiar los tamaños simplemente arrastrando la línea que las separa (como hacíamos con las columnas).





    Disposición maximum
  • Disposición maximumEsta disposición maximiza la ventana activa para que ocupe completamente el espacio asignado a la columna. En la barra de título de la ventana, en la parte derecha, aparecerá una fracción, por ejemplo 2/3, designando que en esa columna hay 3 ventanas y que la que se encuentra activa es la número 2. Pinchar en la imagen de la derecha para verlo mejor.



Disposición stacking
  • Disposición stacking: Esta disposición es idéntica a la maximum excepto en que en vez de aparecer una sola barra, la de la ventana activa, aparecen en orden todas las barras de las ventanas de la columna, aunque sólo se visualiza la ventana activa. Para haceros una idea, de nuevo, clicad en la imagen.



Por último: se puede elegir una disposición diferente para cada columna, no es una opción global.

Las etiquetas

En otros escritorios como por ejemplo Gnome se utiliza la idea de "multiples escritorios" o "espacios de trabajo" para organizar las ventanas que utilizamos. En wmii existe un sistema similar, pero mucho más potente: Las etiquetas.

Las etiquetas son "palabras clave" o números que se asignan a cada ventana. A cada ventana se le puede asignar más de una etiqueta, las que queramos, a diferencia de Gnome, KDE, etc. que sólo permiten elegir si una ventana se ve únicamente en el espacio de trabajo en el que se encuentre o bien que se vea en todos los espacios de trabajo.

Las etiquetas actuales aparecen en la barra inferior de wmii y con un simple clic o una combinación de teclas seleccionamos la que queramos, por lo cual aparecerán en pantalla únicamente las ventanas con esa etiqueta (equivalente a los espacios de trabajo).

Etiquetas variadas

Las etiquetas más rápidas y cómodas de utilizar son los simples números (luego explico por qué) pero se puede utilizar cualquier palabra, e incluso configurar wmii de forma que cierto programa se autoinicie siempre con determinadas etiquetas, por ejemplo.



Una última cosa sobre esto: Cuando se cierre la última ventana con una determinada etiqueta y se seleccione otra etiqueta diferente, la etiqueta "vacía" se eliminará.

La capa flotante
Ventana en la capa flotante sobre
otras en mosaico

A pesar de que wmii es un gestor de ventanas de mosaico, tiene la opción de poner ventanas concretas en la llamada "capa flotante", que es un modo especial en el que una ventana se pone por encima del mosaico usual que tendremos ya creado y la podemos mover y redimensionar a voluntad. Esto está pensado porque hay bastantes programas que no encajan bien con las disposiciones en mosaico, o tal vez simplemente nos sea más cómodo en determinada situación. Para activar o desactivar el modo "capa flotante" en una ventana basta una sencilla combinación de teclas.


Instalación de wmii

Si a alguien le ha convencido y desea probar, aquí dejo unas pequeñas instrucciones. Esto no desconfigurará nada en caso de que alguien ame demasiado a su querido Gnome/KDE/Xfce y tenga miedo de perderlo, llegado un momento podéis elegir qué gestor de los instalados utilizar.

Descarga e instalación

Lo mejor es que busquéis el paquete wmii de vuestra distribución y lo instaléis normalmente. NO, no os lo bajéis del paquete de vuestra distribución. Los binarios compilados son MUY antiguos y funcionan MAL y con errores. Bajároslo así:
  • Instalar el paquete mercurial de vuestra distribución. 
  • Abrid una consola y escribir sencillamente esto, en orden:
$ hg clone https://code.google.com/p/wmii/
$ cd wmii
Lo habremos bajado a una carpeta de nombre wmii en nuestro home, y estaremos dentro de ella.

Ahora toca compilar e instalar. En el fichero config.mk se pueden editar ciertas opciones para esto, pero si no lo tocáis los valores que vienen por defecto no dan ningún problema. Para compilar e instalar:
$ make && sudo make install

 Bien, ahora tenemos dos opciones para ejecutar wmii:

Añadir wmii al login gráfico ya instalado

(En caso de haber instalado wmii mediante el paquete de vuestra distribución, este paso no es necesario y ya aparecerá en la pantalla de login, junto a las otras opciones)

Si antes utilizábamos una pantalla gráfica de login como las de KDE o Gnome (con dos cuadros en medio que ponen: usuario y password) y queremos seguir usándola hacemos esto:
    • En una terminal ejecutamos:
$ sudo nano /usr/share/xsessions/wmii.desktop
    • Ahora copiamos y pegamos esto en el editor de texto que nos sale:
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=wmii
TryExec=wmii
Name=wmii
Comment=Ejecutar wmii
    •  Ejecutamos CTRL+o, Intro y CTRL+x para guardar el archivo y cerrar el editor.
    • Ahora, al iniciar el PC; en la pantalla gráfica de login debe haber una opción para elegir qué sesión queremos iniciar. Basta con elegir la de wmii y se iniciará.

Configurar el login basado en texto (más rápido) y ejecutar posteriormente wmii

Tal vez alguien prefiere prescindir de las pesadas pantallas gráficas de login para acelerar aún más su sistema. Esto hará que el nombre de usuario y el password nos lo pida desde consola al iniciar el PC. Para conseguir esto y ejecutar wmii a continuación:
    • Debemos editar un fichero como root:
$ sudo nano /etc/inittab
    • En ese fichero debemos buscar una línea que diga algo similar a  id:5:initdefault: y lo único que debemos de hacer es cambiar ese 5 por un 3 para que quede id:3:initdefault:
    • Pulsamos CTRL+o, Intro y CTRL+x para guardar y salir del editor.
    • Ahora debemos editar este otro fichero de nuestro home:
$ nano .xinitrc
    • Debemos borrar cualquier cosa que tenga y dejarlo así:
#!/bin/sh
# ~/.xinitrc
setxkbmap es
exec ck-launch-session dbus-launch wmii
    • El setxkbmap le dice que nuestra disposición de teclado es la española (si tenéis otro tipo de teclado buscad en Google qué poner aquí). El dbus-launch se encarga, entre otras cosas, de montar automáticamente dispositivos extraíbles como pendrives. Aseguraos de que tenéis  dbus instalado para esto.
    • De nuevo para guardar: CTRL+o, Intro, CTRL+x
    • Con los pasos que hemos dado hasta ahora, al iniciar el PC os loguearíais con vuestro usuario en una consola, y si ejecutáis el comando startx ya se iniciaría el wmii. Sin embargo, para ahorraros el escribir startx cada vez que iniciáis el sistema, podemos editar este fichero:
$ nano .bash_profile
    • Lo tenéis que dejar así (lo más probable es que lo tengáis casi igual, pero añadid startx en la última línea):
# /etc/skel/.bash_profile
# This file is sourced by bash for login shells. The following line
# runs your .bashrc and is recommended by the bash info pages.
[[ -f ~/.bashrc ]] && . ~/.bashrc
startx

    • De nuevo, para guardar y salir: CTRL+o, Intro, CTRL+x

Finalizado, con cualquiera de estos dos métodos tenéis instalado el gestor de ventanas wmii. En la siguiente entrada enseñaré cómo configurarlo, dar los primeros pasos, aprender las combinaciones de teclas que se utilizan (que es fácil), "tunearlo" un poquillo...

¡Espero que le sea útil a alguien!

miércoles, 15 de febrero de 2012

Las X, entornos de escritorio y gestores de ventanas

Introducción a las X

Muchos sistemas operativos libres como los que utilizan el núcleo Linux utilizan el llamado "X-Window-System" como la manera de generar los gráficos por pantalla. En general, (obviando tecnologías como DRI para gráficos avanzados como 3D) se sigue el siguiente esquema:
  • Tenemos un servidor X, que no es más que un programa, un proceso que se está ejecutando en la máquina del usuario. Se comunica con el hardware de video (tarjeta gráfica -> monitores) a través del driver gráfico que tengamos instalado y se encarga de "dibujar cosas" en pantalla. Dibuja lo que le mande cada cliente en cada momento. Se encarga también de recibir las entradas del usuario (como clics de ratón o escritura desde el teclado) y devolvérselas a su cliente correspondiente.
  • Tenemos clientes X. Son básicamente cualquier programa ejecutándose en modo gráfico. Envían instrucciones al servidor X sobre qué tiene que dibujar, y reciben las entradas de usuario desde el servidor, a las que responden. Para ello utilizan diferentes librerías de programación, la más básica se llama Xlib. Para comunicarse, el cliente y el servidor utilizan el llamado protocolo X.



Esto permite arrancar un sistema GNU/Linux sin tener por qué ejecutar el servidor X, ya que hay muchos programas que no necesitan obligatoriamente una interfaz gráfica y podemos acelerarlos mucho si los ejecutamos en la simple consola. Es decir, el servidor X no es una parte básica del sistema operativo, no está dentro del núcleo, lo que permite por ejemplo que un error del servidor gráfico X no cuelgue definitivamente el PC completo.




El protocolo X se puede transmitir por la red, de forma que, por ejemplo, podemos conectarnos desde el limitado PC de casa corriendo un servidor X a un potente ordenador de la universidad que ejecuta clientes X, y de esa forma trabajar desde casa, entre otras muchas posibilidades. Pero lo usual, claro está, es que tanto el servidor X como los clientes X estén en el mismo ordenador, que es el caso de la mayoría de nosotros.


Los gestores de ventanas


El cliente X más importante que se suele ejecutar es el llamado gestor de ventanas. Los gestores de ventanas no son más que programas encargados de gestionar la apariencia, comportamiento e interrelación de las llamadas ventanas, que como todos sabemos son "espacios" rectangulares pertenecientes a cada programa con interfaz gráfica (recordemos: cliente X) dentro de los cuales dicho programa trabaja y nos muestra la mayoría de sus funciones.

Se encargan de dotar a todas las ventanas de elementos comunes como, en algunos gestores, botones de acción (los típicos de Windows de minimizar, maximizar y cerrar, por ejemplo), barras de título con el nombre del programa... O se encargan de controlar qué acciones del mouse o combinaciones de teclas van a afectar a las ventanas y ejecutar en ellas acciones como abrir, cerrar, minimizar, maximizar, mover y escalar.

También gestionan la disposición de las ventanas en el escritorio. Existen básicamente dos opciones para ello:

Metacity en Gnome
  • Gestores de ventanas de pila: Las ventanas se pueden mover libremente, solapándose unas con otras, y mostrándose la ventana activa en lo más alto de la pila. Se consigue dibujando en el servidor X la ventana activa después de las no activas, de forma que queden por encima. Ejemplos de este tipo de gestores, tenemos los de Gnome y KDE (Metacity y Kwin), los de Windows y Mac, etc.



wmii
  • Gestores de ventanas de mosaico: Las ventanas no se pueden solapar, sino que rellenan completamente la pantalla, pudiendo elegir su tamaño, disposición y otras opciones. Ejemplos de este tipo de gestores, tenemos el awesome, el dwm, el wmii (que es el que uso yo y al que dedicaré una entrada dentro de poco)...



Los entornos de escritorio

Los entornos de escritorio completos como KDE o Gnome (o los más ligeros Xfce, LXDE, etc.) son un conjunto de programas interrelacionados para el disfrute diario del usuario y gestionar completamente el ordenador. Algunos de sus componentes son el gestor de ventanas propio de cada uno, un navegador de archivos, "panel de control" para la administración del sistema con accesos directos a gran parte de la configuración, "demonios" gestores encargados de tareas como reloj, calendario, portapapeles, automontaje de unidades USB, mostrar iconos en el fondo del escritorio, etc.

Es decir, son "cómodos" y tienen todo integrado. Cualquiera de ellos es conveniente si vienes de utilizar un sistema Windows o Mac, ya que dichos SO tienen cada uno su propio entorno de escritorio. Sin embargo en estos entornos no son todo ventajas: Suelen ser muy pesados y por ende ocupar mucha RAM y tiempo de procesador; tener librerías propias y/o compartidas entre todas sus aplicaciones; "obligatoriedad" de instalar muchos programas que son parte de la "suite" y que tal vez no necesites; larga lista de dependencias para cada programa propio, etc.


Por supuesto, no es necesario instalar un entorno de escritorio para utilizar a gusto un servidor gráfico en un sistema GNU/Linux. La mayoría de los gestores de ventanas son independientes, los puedes instalar en cualquier distribución o incluso en otros sistemas Unix-like. Son las maravillas del software libre, que puedes elegir diferentes alternativas para cada pedazo de tu sistema operativo, no dependes de una sola opción integrada en un gran paquete, al estilo de los SOs privativos ya nombrados.

Es más, la opción de no instalar un entorno pesado puede conllevar una comodidad y una rapidez de uso general del ordenador muy superior, a pesar de sus desventajas, como la dificultad de configuración y la necesidad de tener un nivel más bien avanzado de conocimientos relativos a los sistemas GNU/Linux. Ahora mismo, en mi portátil, utilizo el gestor de ventanas de tipo mosaico wmii, y ningún tipo de entorno de escritorio, y la verdad que es una gozada, va como un tiro sin ser una maravilla de PC.



Fuentes:


martes, 14 de febrero de 2012

Script para conectarse a la red eduroam de la Universidad de Valladolid desde Linux con wpa_supplicant

Aviso: El método que pongo en esta entrada es mucho más engorroso que utilizar la manera que pongo aquí y no siempre funciona, por lo que te recomiendo la otra entrada para hacerlo con wicd. De todas formas dejo esto como curiosidad por si a alguien le vale.

Para el que no lo sepa, en muchas universidades a nivel mundial existe un servicio de conexión unificado mediante una red wi-fi con SSID "eduroam" el cual está pensado para que cada universitario tenga un nombre de usuario de la forma XXXXXXXX@uva.es (cambiando la parte final según la universidad a la que pertenezca: "uva.es" en el caso de la Universidad de Valladolid) y una contraseña personal de forma que es posible conectarse con tales datos en cualquier universidad del mundo con este SSID, sin necesidad de registro previo cada vez, lo cual está muy bien a nivel de movilidad.

Pero hay algo que curiosamente NO tienen unificado: el método de encriptación de la red. WPA, WPA2, TKIP, AES, TTLS, PAP, MSCHAPV2, CCMP bla bla bla bla bla......

Esto es un gran error, Internet está plagado de tutoriales personalizados para cada Universidad, con configuraciones que no valen para otras... Y en concreto para el eduroam de la UVa, no he encontrado ningún tutorial con los datos correctos, exceptuando este que sólo es válido en caso de que utilicemos Gnome en nuestra distribución, como es el caso de la archiconocida Ubuntu, Debian u otras, ya que utiliza el gestor gráfico de redes de Gnome, que por cierto es muy bueno y tiene todas las opciones necesarias para la conexión, a diferencia del de KDE por ejemplo.

Pero yo voy al caso general de cualquier distribución Linux, mediante el programa wpa_supplicant exclusivamente, ya que tal vez no tengamos el gestor de Gnome o no lo queramos utilizar por diferentes motivos. Debo decir que la configuración de wpa_supplicant necesaria la obtuvo por experimentación un amigo mío de la universidad, Luis Javier G. cuya pequeña web podéis ver clicando sobre su nombre, y que yo sólo me limito a distribuir públicamente la información.


Programas necesarios:

  • wpa_supplicant
  • Un cliente DHCP
  • wireless-tools

¿Qué es wpa_supplicant? Es un programa libre que permite a un sistema Linux conectarse a redes wi-fi que posean protección WPA o WPA2, siempre y cuando tengamos bien configurada la tarjeta wi-fi, lo que queda fuera de este manual.

También necesitaremos un cliente DHCP, que es el encargado de recibir una dirección IP desde el router de la uni y así poderte conectar. En Linux existen unos cuantos, como dhcpcd, pump, dhclient... Todos funcionan bien y muy parecido, por lo que elegir uno u otro es una cuestión más bien de gusto. Yo recomiendo el último.

Y en cuanto a wireless-tools, es un conjunto de utilidades para redes wi-fi en Linux, necesario para llevar a cabo ciertas operaciones sobre los interfaces de red.

Para instalarlos, simplemente ejecutamos como root o superusuario (o con sudo delante) el comando adecuado de instalación de paquetes de tu distribución, por ejemplo:

Debian/Ubuntu:

# apt-get install wpasupplicant wireless-tools dhcp
Gentoo:

# emerge -av wpa_supplicant wireless-tools dhcp
ArchLinux:

# pacman -S wpa_supplicant wireless-tools dhcp

(o bien cambiar dhcp por pump, dhcpcd o el que elijas. Recuerda que la # designa que el comando se ejecuta como root, y no hay que ponerla)

Etcétera, supongo que ya sabrás cómo instalar paquetes en tu distribución, es algo que está unos capítulos antes que "configurar una red WPA en la universidad" en el proceso de aprendizaje de Linux...


Configurando correctamente wpa_supplicant


El programa wpa_supplicant no tiene un bonito y precioso interfaz gráfico (lo siento para los amantes de esas cosas) pero NO PASA NADA, no es nada complicado de configurar y además, joven e inexperto linuxero con miedo a la terminal: Pierde ese miedo y descubre el PODER y las maravillas que puedes hacer con ella.

En fin, lo primero es crear un archivo de configuración al que llamaremos "eduroam.conf" en la carpeta "/etc/wpa_supplicant", lo cual sólo se puede hacer como root o superusuario de nuevo, debido a los permisos de esa carpeta. Así que ejecutamos:

# nano /etc/wpa_supplicant/eduroam.conf

En la ventana del editor de texto nano que aparecerá, simplemente copiamos y pegamos esto:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
country=ES
filter_ssids=0
network={
                ssid="eduroam"
                key_mgmt=WPA-EAP
                eap=TTLS
                anonymous_identity="anonymous@uva.es"
                identity="AAAAAAAAAA@uva.es" # <- tu usuario
                password="BBBBBBBBBB" # <- tu clave
                phase2="auth=PAP"
}

(En la terminal se pega con CTRL + Shift + V)

Bien, ahora sustituye AAAAAAAAAA por tu nombre de usuario y BBBBBBBBBB por tu contraseña. En la UVa el usuario es una letra e seguida de tu NIF con la letra final minúscula. Ejemplo: Si tu NIF/DNI es 70072767-X, será "e70072767x"

Si no recuerdas o no dispones de la contraseña por ser nuevo alumno, la puedes obtener aquí.

Perfecto, ahora guardamos el archivo pulsando CTRL + O y luego Intro.

El siguiente paso es, obviamente, dirigirnos físicamente hasta una de las facultades de la UVa, ya que desde el sofá o el bar no llega la señal eduroam.



La conexión a eduroam propiamente dicha

Una vez que estamos en la facultad, en teoría lo único que haría falta sería ejecutar el programa wpa_supplicant, obtener una dirección IP, etc. Pero sin embargo para evitar problemas aquí dejo un script que lo hace todo por su cuenta, incluidas las comprobaciones necesarias para activar la red, comprobar si existe finalmente conexión a Internet, etc. El script también está hecho en su mayoría por mi amigo, con pequeños arreglos por mi parte para que todo funcione bien. Así que abrimos de nuevo un editor nano (esta vez no hacen falta permisos de root/superusuario):

$ nano ~/eduroam.sh

Y copypasteamos esto:

#!/bin/bash
ROOT=root
if [ $USER = $ROOT ]; then
## Variables importantes ##
CONF_FILE=/etc/wpa_supplicant/eduroam.conf
INTERFAZ=$(iwconfig 2>/dev/null | cut -f1 -d\ | sed '/^$/d')
PID_FILE=/var/run/wpa_supplicant/$INTERFAZ.pid
## Funcion llamada cuando algo falla durante la ejecución ##
function cancelar(){
        echo -ne "\tERROR: Operacion cancelada\n"
        echo -ne "\tDeshabilitando interfaz $INTERFAZ\t\t"
        ifconfig $INTERFAZ down 1>/dev/null 2>&1
        kill `cat $PID_FILE 1>/dev/null 2>&1` 1>/dev/null 2>&1
        rm $PID_FILE 1>/dev/null 2>&1
        sleep 1s
        echo -ne "[ OK ]\n"
}
if [ -n "$INTERFAZ" ]; then
        echo -ne "\tHabilitando interfaz $INTERFAZ\t\t"
        RED1=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 1p)
        RED2=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 2p)
        RED3=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 3p)
        ifconfig $RED1 down 2>/dev/null
        ifconfig $RED2 down 2>/dev/null
        ifconfig $RED3 down 2>/dev/null
        ifconfig $INTERFAZ up
        sleep 1s
        echo -ne "[ OK ]\n\tConectando a la red eduroam e identificando...\t\t"
        killall wpa_supplicant 2> /dev/null
        EDUROAM=$(iwlist $INTERFAZ scan 2>&1 | grep eduroam)
        if [ -n "$EDUROAM" ]; then
                wpa_supplicant -B -Dwext -i $INTERFAZ -c $CONF_FILE -P $PID_FILE 1>/dev/null 2>&1
                sleep 10s
                RET=$(iwconfig 2>/dev/null | grep eduroam)
                if [ -n "$RET" ]; then
                        echo -ne "[ OK ]\n"
                else
                        echo -ne "[ FAIL ]\n"
                        echo -ne "\tRed eduroam detectada, pero no ha sido posible conectarse.\n"
                        cancelar
                        exit 1
                fi
        else
                echo -ne "[ FAIL ]\n"
                echo -ne "\tRed no encontrada en el escaneo. ¿Tienes cobertura de red?\n\tSi es la primera vez que te sale esto, reejecuta el script.\n"
                cancelar
                exit 1
        fi
        RET2=$(ping -c1 -W1 www.google.es | grep "bytes of data")
        if [ -n "$RET2" ]; then
                echo -ne "\tConectado.\n"
        else
                echo -ne "\tSolicitando IP con dhclient...\t"
                RET3=$(dhclient -v $INTERFAZ 2>&1 | grep ACK)
                if [ -n "$RET3" ]; then
                        echo -ne "[ OK ]\n\tConectado.\n"
                else
                        echo -ne "[ FAIL ]\n"
                        echo -ne "\tHa sido posible conectarse a eduroam, pero no hay Internet... Ni idea de lo que sucede.\n"
                        cancelar
                fi
        fi
else
        echo -ne "\tNo se han encontrado interfaces de red inalambricas.\n"
fi
else
        echo "Debes ejecutar este script con permisos de root. Utiliza \"sudo ./eduroam.sh\" o \"su -c \"./eduroam.sh\"\" para lanzarlo."
fi

He marcado una zona en rojo: La correspondiente al driver de la tarjeta wi-fi que utiliza wpa_supplicant.
El driver por defecto es wext (Wireless EXTensions) y en la mayoría de los casos funciona perfectamente. Sin embargo ciertas tarjetas, como algunas Atheros (como la mía, una Atheros AR9285) no se encuentran a gusto con este driver y prefieren otro, el nl80211. Probablemente no haya que tocar nada, pero si no funciona el script, prueba antes a cambiar el driver wext por alguno de estos:
  • hostap - Host AP driver (Intersil Prism2/2.5/3).
  • hermes - Agere Systems Inc. driver (Hermes-I/Hermes-II).
  • madwifi - MADWIFI 802.11 support (Atheros, etc.).
  • atmel - ATMEL AT76C5XXx (USB, PCMCIA).
  • wext - Linux wireless extensions (generic).
  • ndiswrapper - Linux ndiswrapper.
  • broadcom - Broadcom wl.o driver.
  • ipw - Intel ipw2100/2200 driver.
  • wired - wpa_supplicant wired Ethernet driver
  • roboswitch - wpa_supplicant Broadcom switch driver
  • bsd - BSD 802.11 support (Atheros, etc.).
  • ndis -Windows NDIS driver.
  • nl80211 - Linux nl80211/cfg80211

Una vez elegido el driver pulsamos CTRL + O para guardarlo, y le damos permisos de ejecución con:

$ chmod +x eduroam.sh
Si has seguido exactamente los pasos del manual, tendrás un archivo llamado eduroam.sh en tu carpeta personal, el cual en cuanto lo ejecutes te conectará sin problema (espero) a la red. Sólo puedes ejecutarlo como root, si no te dará un aviso, ya que no podrá ejecutar varios de los comandos que requiere. Para ejecutar, estando en nuestra carpeta home:

# ./eduroam.sh
o
$ sudo ./eduroam.sh
(si no estás logueado como root)

Una vez ejecutado, puedes cerrar esa terminal y la conexión no se irá.

En caso de utilizar Gnome o KDE puedes crear un lanzador en el escritorio (enlace a aplicación) con este comando:

gksudo ~/eduroam.sh
(Gnome)

o bien
kdesu ~/eduroam.sh
(KDE)

para poder conectarte con un clic, pero no verás los mensajes de éxito/error que saldrían por consola y tendrás que confiar en tu intuición, esperar unos segundos y comprobar si hay conexión.

Ya para despedirme, si a la primera el script da alguna especie de fallo, puedes intentar ejecutarlo dos o tres veces seguidas, y tal vez mágicamente se corrija.

Espero que a alguien le sirva, ¡un saludo!