domingo, 22 de mayo de 2011

Como ejecutar acciones automáticamente luego de establecer una conexión con wvdial/ppp

Buenos días.

Estoy utilizando Kubuntu Natty y estoy bastante satisfecho con la distro aunque tengo un par de bugs que me fastidian con relativa frecuencia.

Uno de ellos es que cuando conecto mi modem GSM a internet, squid3 no logra salir a través de esta nueva conexión (no se por qué). La forma de resolverlo es bastante sencilla. Solo hay que reiniciar el servicio de squid y con eso ya puedo navegar normalmente (tengo las aplicaciones configuradas para utilizar squid).

Pero eso implica que cada vez que se establece la conexión (yo lo hago ejecutando wvdial normalmente) tengo que esperar a que se establezca la conexión para luego ejecutar el comando para reiniciar el proceso de squid. Decidí resolver esta situación y no es complicado.

pppd (en ubuntu... supongo que en debian también.. no podría garantizar en otras distros) ofrece un directorio donde se pueden colocar scripts que serán ejecutados cuando se establezca una conexión o cuando se caiga. En este caso como es una acción que se hace al establecer la conexión, creé un script en el directorio /etc/ppp/ip-up.d:

$ cat /etc/ppp/ip-up.d/9999squid #!/bin/bash

/etc/init.d/squid3 restart

Muy directo. Aseguúrese de tener la bandera de ejecutable del script habilitada y con eso está resuelto.

Adicionalmente, al ejecutar el script se reciben los siguientes parámetros (en el orden en el que se van recibiendo):
Interfaz
TTY
Velocidad
Dirección IP Local
Dirección IP del par
Un parámetro adicional opcional (recibido en la ejecución de pppd)

Supondría que también estarían disponibles las variables de entorno PPP_IFACE, PPP_TTY, PPP_SPEED, PPP_LOCAL, PPP_REMOTE, PPP_IPPARAM pero no he hecho la prueba.

Nota: Dado que el hack está emplementado en pppd, también debería funcionar con conexiones configuradas en NetworkManager que utilicen ppp (como las que son de banda ancha telefónica).

No hay comentarios:

Publicar un comentario