Webalizando nuestros hosts virtuales en un plis-plas


En este truco os pongo un pequeño script que lee de los ficheros de configuración del Apache y genera estadísticas para cada uno de los VirtualHost definidos utilizando el Webalizer.

Con este script no os teneis que preocupar del webalizer cuando añadis un nuevo VirtualHost. Como es lógico, debemos tener instalado el webalizer (apt-get install webalizer 😉
Para que se ejecute periodicamente, yo he puesto el script en /etc/cron.daily
Y finalmente, aquí teneis el script weballizer. Para configurarlo, solo existen tres parámetros:

  • $httpdFile: nombre del fichero donde está la configuración del Apache.
  • $vhostsFile: nombre del fichero donde está la configuración de los hosts virtuales (puede ser el mismo que $httpdFile, pero en mi caso no lo es).
  • $statsDir: directorio del DocumentRoot del host virtual donde se guardaran las estadísticas.

He tenido que cortar algunas líneas para que la página se pudiera ver bien a 800×600 sin necesidad de utilizar la barra de desplazamiento. Lo digo por si alguien lo intenta usar y le da errores.

#!/usr/bin/perl -w
# weballizer – Genera estadisticas de todos los hosts virtuales que
# tengamos configurados en nuestra máquina
# Eduard Llull, 2002

# Configuracion del script

my $httpdFile = “/etc/apache/conf/httpd.conf”;
my $vhostsFile = “/etc/apache/conf/vhosts.conf”;
my $statsDir = “/stats”;

# Fin configuracion

# Obtenemos el ServerRoot
open CONF, $httpdFile or
die “Cannot open $vhostsFile\n”;
while ($line = ) {
if ($line =~ /^\s*ServerRoot\s+(\S+)/) {
$serverRoot = $1;
$serverRoot .= “/” unless ($serverRoot =~ /\/$/);
last;
}
}
close CONF;

# Buscamos todos los VirtualHost
open VHOSTS, $vhostsFile or
die “Cannot open $vhostsFile\n”;
while ($line = ) {
# Buscamos el principio del VirtualHost
if ($line !~ /^\s*/) { next; }

# Obtenemos los valores de los parametros interesantes:
# ServerName, CustomLog, DocumentRoot
while (($line = ) !~ /^\s*<\/VirtualHost>/) {
$serverName = $1
if ($line =~ /^\s*ServerName\s+(\S+)/);
$accessLog = $1
if ($line =~ /^\s*CustomLog\s+(\S+)/);
$accessLog = $1
if ($line =~ /^\s*AccessLog\s+(\S+)/);
$documentRoot = $1
if ($line =~ /^\s*DocumentRoot\s+(\S+)/);
}

# Si el AccessLog (o CustomLog) no empieza por /,
# le anteponemos el ServerRoot
$accessLog = “$serverRoot$accessLog”
unless ($accessLog =~ /^\//);

# Ejecutamos el webalizer son los parametros obtenidos
if ($serverName && $accessLog && $documentRoot) {
mkdir “$documentRoot$statsDir”, 0775
unless stat “$documentRoot$statsDir”;
system “webalizer -q -p -n $serverName \
-o $documentRoot$statsDir $accessLog”;
}
}
close VHOSTS;

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1406 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.