Das Script sucht mit find die angegebenen logfiles, und checkt ihr Alter mit stat -c %Y
Falls die Logfiles komprimiert sind, entpackt das Script sie mit gunzip
Mittels sed werden alle IP-adressen mit xxx.xxx.xxx ersetzt.
Falls das Logfile komprimiert war, wird es nachher wieder mit gzip komprimiert.
Dieses Script beeinflusst die Funktionalität von logrotate nicht, und wird zusätzlich dazu eingesetzt, z.B. als
cronjob.
Scriptausgabe wird gelogt nach LOG="/tmp/${PROGNAME}.log"
Fehler werden gelogt nach ERR_LOG="/tmp/${PROGNAME}.error.log" mit Timestamp
timestamp_log=$(date "+%F %T") (kann im Quellcode angepasst werden)
Kommandozeilenparameter
-f {filename}
logfile name (default: /var/log/apache2/*.log* ) Dieser Parameter wird an find übergeben, und
benutzt dieselbe Syntax für Wildcards bzw regex. Siehe man find.
--age {number}
Alter in Tagen, nachdem die Logfiles anonymisiert werden. (default: 7) Wert 0 benutzen, um den age-Check zu deaktivieren
und alle Logfiles zu anonymisieren.
-e {exclude_string}
Einen bestimmten String (logfile name, folder, etc) von der Suche ausschließen. Auche mehrere -e Parameter
möglich.
Bei erfolgreichem Durchlauf wird das Script immer mit exit_code=0 beendet, unabhängig davon ob Logfiles
anonymisiert wurden oder nicht.
Falls das Script keine Logfiles mit den angegebenen Parametern findet, ist der exit_code=1 WARNING
Wenn das Script vorzeitig beendet oder abgebrochen wird, oder interne Fehler entstehen, ist der
default_exit_code=3 UNKNOWN
Perfdata
Dieses Script generiert keine Perfdaten.
Beispielausgabe
LOG="/tmp/${PROGNAME}.log"
Anwendungsbeispiele
Um DSGVO-Anforderungen zu erfüllen, hat uns ein Kunde gebeten dieses Script zu entwickeln.
Man hätte es alternativ auch in der prerotate-Anweisung im logrotate lösen können, jedoch
wollte der Kunde die rotation weiterhin auf daily belassen, aber erst nach 7 Tagen die IPs anonymisieren.