arreglar conexión wifi

Bueno, mi driver (rt73) de mi wifi usb (Conceptronic54RU) de vez en cuando deja de enviar y recibir datos, por lo cual, me veo obligado a bajar la interfaz, quitar y agregar los módulos y configurar nuevamente la conexión wifi.
Anteriormente hice un post para configurar cuando linux inicia la conexión (cargar los módulos, levantar la interfaz y asignar ip por dhcp).
Luego, hice otro post para explicar como ejecutar scripts periodicamente con cron, especificamente cada 1 minuto.

Bueno, pues aquí posteo el script arreglar_wifi.sh, que hace un ping al router wifi, si no responde, baja la interfaz, descarga los módulos de la nic wifi, borra el lease dhcp y ejecuta el script para configurar wifi.
Cuando detecta que está caida la conexión, envía una alerta general con logger, por lo tanto, kde muestra una ventana con el mensaje.






# arreglar mi wifi cuando se cuelga
# comprueba si llega al Default gateway, si no llega, baja:
# - la IF
# - los módulos relacionados con la NIC wificdd
# - el lease dhcp
# luego levanta con /usr/local/bin/wifi.sh
#
# Jorge Mestre - LugSaJu


# archivo de log
archLog="/var/log/arreglar_wifi.log"


# función para escribir en el log
escLog(){
local fecha=`date +%d/%m/%y\ %H:%M:%S` #fecha con formato: dd/mm/aa hh:mm:ss"
lotexto="$1" # argumento con el que se llamo a la funcion, el texto que se quiere loguear
echo "$fecha: $texto">> $archLog # redirigido al log
# echo "$fecha: $texto" | tee -a $archLog # redirigido al log
} # fin funcion


#definimos información necesaria...
int="wlan0"
modulos=(rt73 rt73usb rt2x00usb rt2x00lib)
archdhcp=/etc/dhcpc/dhcpcd-wlan0.pid

gateway=192.168.1.1


# $? equivale al número de error que deja el último comando ejecutado
# 0 es exitoso


/bin/ping -c 1 $gateway 1> /dev/null

if [ $? -ne 0 ];then
escLog "gateway no responde, enviando una alerta a todo el sistema."
/usr/bin/logger -p emerg "La conexión wifi se ha caido, comienza la restauración..."
escLog "alerta enviada, todo el mundo se ha enterado."


escLog "comienza la restauración."
# baja de la IF
escLog "dando de baja la interfaz $int"
/sbin/ifconfig $int down

# baja de los modulos
for m in ${modulos[@]}; do
/sbin/rmmod $m
escLog "modulo $m quitado"
done
# borrado del lease dhcp
escLog "borrando lease dhcp"
/bin/rm $archdhcp
# llamar al script de configuracion para que vuelva a configurar todo
escLog "llamar al script de configuracion para que vuelva a configurar todo"
escLog "el log del script de configuracion es /var/log/conexion_wifi.log"
/usr/local/bin/wifi.sh



#comprobar si se restauró correctamente.
/bin/ping -c 1 $gateway 1> /dev/null

echo "pinggg $?"
if [ $? -ne 0 ];then
escLog "no se ha restaurado la conexión wifi"
/usr/bin/logger -p emerg "No se pudo restaurar la conexión wifi..."
else
escLog "conexión wifi restaurada!"
/usr/bin/logger -p emerg "conexión wifi restaurada!"
fi
fi