Como enviar Awstats directo al correo

English version of this post.
Hace unos meses atrás instalé Awstats en mi servidor (de lo cual no hablaré en este post). El problema fue que casi no accedía a la url para ver las estadísticas de mis sitios web ya que ello requería acordarme de vez en cuando que tenía que hacerlo.

Yo soy una persona que le pone mas atención al correo que a otra cosa en cuestión de datos e información se refiere. Pues bien, decidí enviar mis estadísticas al correo electrónico en vez de tener que estar utilizando la url para verlas. Empecé buscando algún plugin u opción built-in para hacer esto lo mas sencillo posible y no tener que invertir mucho tiempo en ello. Tal vez mi búsqueda no fue la mejor, o simplemente no existe, el caso es que no encontré una forma fácil y configurable de enviar estos datos al correo.

Una vez que me dí por vencido empecé a pensar en opciones para realizar esta tarea y aquí les dejo el approach que utilicé. Probablemente a alguien le sea de utilidad.

function send_awstats() {
    # Download awstats for all sites. Send them as html email 
    for ((i = 0; i < ${#__server_sites[@]}; i++)); do
        wget --tries=3 --output-document=/tmp/${__server_sites[$i]}.html --no-check-certificate --user user --password pass https://awstats/url/?config=${__server_sites[$i]}
        mail -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "Daily Awstats [${__now}]: ${__server_sites_domains[$i]}" root@localhost < /tmp/${__server_sites[$i]}.html
        rm -f /tmp/${__server_sites[$i]}.html
    done
}

Básicamente lo que hace el script es hacer un request a la url de Awstats y salva el contenido como archivo html en un directorio temporal. Después envía ese archivo descargado como email html. Para que esto funcione se debe tener instalado Awstats así como postfix para envío de correos.

Este script se puede poner en un archivo sh y configurar un cron job para que periódicamente y de acuerdo a tus necesidades te envíe correos con las estadísticas mas recientes.

¡Saludos!
-Yohan

Leave a Reply

Your email address will not be published. Required fields are marked *