sudo: Jack of all trades, master of some

Script personalizado para rotar logs de squid

1 comentario

Me gusta logrotate, sus facilidades, su configuración y flexibilidad, pero en algunos casos muy específicos no me resulta completo. Actualmente uso un script personalizado para rotar los logs de Squid adaptado a mis necesidades. Todo lo que hago con este script no lo puedo hacer con logrotate. Si se puede mejorar, bienvenidas las sugerencias.

#!/bin/bash

export LC_TIME="es_ES.UTF-8" # manejar las fechas en español

LOGFILE=/var/log/squid/access.log # ubicación del log de acceso
CACHEFILE=/var/log/squid/cache.log # ubicación del log de cache
BASEDIR=/var/squid-logs # directorio base para la rotación
LOGDIR=${BASEDIR}/$(date +%Y)/$(date +%B) # directorio de almacenamiento de logs
FILENAME=proxy-$(date +%d%m%Y).log # nombre de archivo del log
HOST=host.dominio.tld # nombre del servidor ftp
USER=usuario # usuario en el servidor ftp
PASSWORD=contraseña # contraseña del usuario en el servidor ftp

# comprobar que existe el directorio de almacenamiento de logs
# si no existe, crearlo.
if [ ! -d ${LOGDIR} ]; then
	mkdir -p ${LOGDIR}
fi

invoke-rc.d squid stop # detener el servicio de squid
mv ${LOGFILE} ${LOGDIR}/${FILENAME} # mover el log hacia el directorio de almacenamiento de logs
> ${CACHEFILE} # vaciar cache.log
invoke-rc.d squid start # iniciar servicio de squid

# si existe un archivo con el mismo nombre que el que se va a rotar
# renombrarlo por la fecha de modificación
if [ -f ${LOGDIR}/${FILENAME}.gz ]; then
        mv ${LOGDIR}/${FILENAME}.gz ${LOGDIR}/proxy-$(date -d "$(stat -c %y ${FILENAME}.gz)" +%d%m%Y%H%M).log.gz
fi

gzip -9N ${LOGDIR}/${FILENAME} # comprimir el log

# subir el log a un servidor ftp
lftp <<UPLOAD
        set ftp:passive-mode off # usar detrás de un firewall
        open -u ${USER},${PASSWORD} ${HOST}
        mirror -R ${BASEDIR}
        quit
UPLOAD

exit 0
Comentarios desactivados
  1. También usaba logrotate pero hace mucho tiempo me decanté por bash para esta función. Este script está excelente y muy completo. Lo acabo de implementar en mi nuevo centro de trabajo. Un saludo para el sysadmin que administra este blog. Estamos en contacto.