15 de Abril, 2005

Hack de la semana

Tampoco quiere decir que haga un solo hack a la semana o que todas las semanas me vea obligado a hacer hacks, pero sí: esta vez ha sido necesario.

Ya es legendaria la estabilidad de scuba (elxwifi) :D. Es una máquina my vieja, en condiciones extremas (dentro de un tupperware). Y además tiene una Ralink 2400 que... bueno, no es la tarjeta, ni el driver es genial tampoco.

Resulta que a veces la tarjeta ra0 se va de paseo, y no hay manera de que funcione. A veces salta al punto de acceso que no debe, confundiendo a club radio por truck, y otras simplemente el driver se 'engancha'.

Teníamos ya un script dentro de cron que cada minuto verificaba dicha tarjeta e intentaba forzar la asociación con el AP correcto, pero no iba (el driver no implementa esa extensión).

Así que, el hack:

#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
 
iwconfig ra0 | grep "00:40:05:AE:9F:02" > /dev/null
 
if [ $? -ne 0 ]; then
        echo "Lázaro, ¡levántate y anda!"
        ifdown ra0 && sleep 5 && ifup ra0
        echo "ifup ra0 == $?"
fi

Cada minuto se comprueba que la MAC de truck aparezca en la información de la ra0, lo que significa que todo está bien. Sino... bueno, sucio pero efectivo :P.

Se me olvidó poner el PATH, necesario para que el shell que ejecute las cosas desde cron encuentre los programas que el script utiliza. Felipe se dio cuenta cuando le llegaba un correo de error por minuto :D.

Los mensajes son importantes. La salida de la ejecución del script se envía por cron al administrador (Felipe), lo que ayuda a saber que el hack funciona y con qué frecuencia. Además, a todo el mundo le gusta recibir correos de sus scripts ;).

La idea parte de un script de Santi que es algo más radical, todo porque él depende de las tarjetas Ralink mucho más que nosotros y se ve obligado a reiniciar la máquina desde el script cuando todo falla :|.

Anotación por Juan J. Martínez.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.