Costeinet: Documentación
El programa no está optimizado, y su única pretensión es que se vea como se pueden usar ficheros, punteros, estructuras... en c de una forma sencilla. En fin, el programa crea un log de conexiones a internet a través del pppd. Cada conexión queda reflejada en una línea en la que se indica la fecha de comienzo, la fecha de fin de conexión y las pesetas que ha costado. Si la llamada dura menos de 60 segundos, la marca con tres asteriscos, así podemos comprobar que aunque se nos haya caido la conexión, Telefónica no se olvida de cobrarnos la llamada :(.
Para escribirlo y compilarlo usé el wpe.
El programa funciona así: al llamarlo, comprueba si existe un fichero llamado /tmp/inicio.tmp, si no existe lo crea y graba en él la fecha actual. En cambio, si ya existe, compara la fecha actual con la que contiene el fichero, y en base a esto calcula los pasos y pesetas que ha costado la llamada. Cuando acaba, se borra ese fichero temporal.
El pppd cuando tiene levantada la conexión, ejecuta el script /etc/ppp/ip-up, y cuando desconectamos con ppp-off ejecuta el /etc/ppp/ip-down. La documentación del pppd advierte que no se juegue con estos scripts, pero que podemos hacer lo que queramos con /etc/ppp/ip-up.local y con etc/ppp/ip-down.local. Pues en estos scripts es donde yo llamo al programa costeinet, quedando así todo el proceso automatizado.
El ip-up.local podría ser:
#!/bin/bash
#/etc/ppp/ip-up.local
#lo de borrar es por si alguna vez se desconecta de manera "sucia" y por
#lo que sea no se ejecuta el ip-down.local
rm /tmp/inicio.tmp
costeinet
Y el ip-down.local
#!/bin/bash
#/etc/ppp/ip-down.local
costeinet
El programa usa dos ficheros: /tmp/inicio.tmp, donde guarda la fecha de inicio de conexión, y /var/log/costeinet, donde están los logs de conexiones.
Por otro lado, aunque yo siempre trabajo como usuario normal, el pppd lo lanzo como root, o sea, que si aparecen problemas, mirad los permisos.
Pues eso, a divertirse y a mejorarlo, que os resultará fácil.
El programa está aquí: costeinet.c