Bueno, tal y como había prometido, aquí teneis el script que utilizo para generar las gráficas de velocidad de mi conexión, así como almacenar todos los datos del estado del router. Lo he estado utilizando durante aproximadamente un mes y no he tenido problemas, pero aun así por ahora se encuentra en fase beta. Ha sido programado desde y para un sistema operativo Linux, pero puede utilizarse también bajo Windows, sólo hay que instalar el software equivalente y cambiar las rutas de generación de los archivos a rutas válidas (establecidas en el fichero ‘config.php’).
El script está creado en PHP y está diseñado para ser ejecutado directamente desde la consola. Aunque actualmente sólo soporta el router VOIP de Ya.com, he creado un sistema similar a los plugins para poder utilizarlo con cualquier router. Dentro de la carpeta includes se pueden añadir más php que obtengan de cada router específico los datos, espero añadir esta semana que viene soporte para el Conceptronic C54APRA2+ y el Zyxel 660HW.
Estoy estudiando programar un cliente en java para poder analizar los datos día a día con gráficas y demás, esto por ahora no tiene fecha prevista. 🙂
Os dejo a continuación un enlace a la descarga y el contenido del archivo ‘LEEME.txt’ que no sé porque extraña razón todo el mundo evita leer 😀
adslometer v0.1 GPL por Jesús Diéguez Fernández
Prerequisitos
—————Para poder utilizar este script deberás tener instalados los siguientes paquetes:
php5 – Intérprete del lenguaje PHP
php5-cli – Añadido para poder utilizar los scripts PHP directamente desde consola
gnuplot – Programa para generar gráficas
mysql-server-5.0 – Gestor de base de datosSi utilizas una distribución de linux basada en debian, será tan sencillo como ejecutar como root lo siguiente:
apt-get install php5 php5-cli gnuplot mysql-server-5.0
Contenido
————LEEME.txt – Este fichero
GPL-v3.0.txt – Licencia GPL versión 3
a_velocidad.sql – Script de generación de la base de datos, incluye el nombre de la base de datos, un usuario y contraseña por defecto, se recomienda editar este fichero antes de continuar
config.php – Script con las variables de configuración necesarias para que todo funcione correctamente
functions.php – Librería de funciones útiles utilizada por los scripts
adslometer.php – Script de consola que comprueba los datos actuales del router, los almacena en la base de datos MYSQL y genera una gráfica con los datos de las últimas 6 horas
dataview.php – Script de consola que genera una tabla html con los datos de los últimos tres días
include/ – Carpeta donde se almacenarán los scripts específicos de cada router para obtener los datos del mismo, funcionan a modo de plugin
SMC7908A-ISP.php – Script para el router ADSL de Ya.com con soporte para VOIPTodos los scripts están debidamente comentados y creo que han quedado bastante legibles, puedes personalizarlos a tu gusto si así lo necesitas.
Instalación
————-Se debe extraer todo el contenido en una carpeta, preferiblemente bajo /usr/share o bajo /opt.
Para crear la base de datos, después de haber ajustado el nombre de la base de datos, usuario y contraseña en el script ‘a_velocidad.sql’ que se incluye, sólo tendremos que ejecutar esto:mysql -u root -p < a_velocidad.sql
Después de eso sólo habrá que escribir ‘quit’ para salir.
Estos scripts se pueden ejecutar desde un servidor http como apache, haciendo un alias a la carpeta donde se encuentra, pero se recomienda ejecutarlos periódicamente para evitar sobrecargar el servidor y el propio router. Se deberán incluir dos nuevas tareas en cron:
crontab -e
# m h dom mon dow command
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/share/adslometer/adslometer.php 1>/var/www/adsl_speed.txt &
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /usr/share/adslometer/dataview.php 1>/var/www/adsl_data.html &Y listo, ya tenemos funcionando el adslometer. 🙂
Comentarios
—————Algunas cosas que mencionar:
– En la base de datos se ha creado la tabla ‘a_velocidad’ que contiene los datos obtenidos cada 5 minutos del router. Como utilizar estos datos puede ser muy engorroso ya que hay muchos registros repetidos, se ha creado una vista de esta tabla, llamada ‘velocidad’ que contiene sólo aquellos registros que son distintos.
– El script lo he estado probando durante casi un mes y ha funcionado correctamente, aun así se encuentra en estado beta.
– Estoy estudiando hacer un cliente basado en java para poder analizar los datos mes a mes en diferentes gráficas, para poder sacar conclusiones sobre si los cortes o bajadas de velocidad ocurren en los mismos días, o mismas horas, etc…Espero que os sea útil. 🙂