Logrotate-Config für VHosts automatisch erstellen

Mit diesem Script erzeuge ich für alle Virtuellen-Hosts eines Apache2-Webservers eine Konfiguration für Logrotate.

Hierzu lese ich die VHost-Konfigurationen in /data/sites ein und parse daraus die Pfade zu den Logfiles.

Anschließend erzeuge ich mit Hilfe eines Templates die eigentliche Konfigurations-Datei im logrotate.d-Ordner.

logrotate-config.sh

#!/bin/bash
CONFDIR=/data/sites/
TEMPLATE=/data/sites/logrotate.conf.template
OUTFILE=/etc/logrotate.d/`hostname`-apache
echo "# DO NOT EDIT!" > $OUTFILE
echo "# automatically generated by $0 on `date`" >> $OUTFILE
echo "" >> $OUTFILE
for i in `cat $CONFDIR/*.conf | grep -i -E "(Transfer|Error|Custom)Log" | awk '{ print $2; }' | sort | uniq`
do
        echo -n "$i " >> $OUTFILE
done;
echo $OUTFILE
cat $TEMPLATE >> $OUTFILE
cat $OUTFILE

/data/sites/logrotate.conf.template

{
  missingok
  notifempty
  sharedscripts
  postrotate
  /etc/init.d/apache2 reload > /dev/null 2>&1 || true
  endscript
  rotate 9999999
}