# letztes Logfile durch logrotate via Mail senden lassen

Logrotate bietet zwar auch so eine Funktion an, jedoch wird dabei das Logfile nicht auf dem Server archiviert sondern nur via Mail verschickt und danach gelöscht.

Mit folgendem kleinen Script kann man das Logfile versenden und es dennoch auf dem Server belassen. Dieses Beispiel versendet das maillog:

<div id="bkmrk-%23%21%2Fbin%2Fsh-%C2%A0-rec%3D%22emp"><div>```
<span class="co0">#!/bin/sh</span>
 
<span class="re2">REC</span>=<span class="st0">"empfaenger@domain.com"</span>
 
<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gzip</span> <span class="re5">-c</span> <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>maillog <span class="sy0">></span> <span class="sy0">/</span>tmp<span class="sy0">/</span>maillog.gz
<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">"Hallo,<span class="es1">\n</span>Anbei das maillog von <span class="es5">`date`</span>.<span class="es1">\n</span>Viele Grüße, Ihr Server"</span> <span class="sy0">|</span> mutt <span class="re5">-s</span> <span class="st0">"Logfile von <span class="es5">`date`</span>"</span> <span class="re5">-a</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>maillog.gz <span class="re1">$REC</span>
<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">rm</span> <span class="re5">-f</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>maillog.gz
```

</div></div>logrotate muss dann nur noch so konfiguriert werden, dass es das gewünschte Logfile gesondert behandelt. Für das maillog würde das dann bedeuten, dass der Eintrag aus /etc/logrotate.d/syslog entfernt und eine neue Datei /etc/logrotate.d/maillog mit folgendem Inhalt angelegt wird:

<div id="bkmrk-%2Fvar%2Flog%2Fmaillog-%7B-r"><div>```
/var/log/maillog {
    rotate 365
    olddir /var/log/maillog.old
    daily
    sharedscripts
    prerotate
        /bin/gzip -c /var/log/maillog > /tmp/maillog.gz
        /bin/echo -e "Hallo,\nAnbei das maillog von `date`.\nViele Grüße, ihr netter Server" | mutt -s "Logfile von `date`" -a /tmp/maillog.gz ich@meinemailadresse.de
        /bin/rm -f /tmp/maillog.gz
    endscript
    postrotate
	/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
	/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
```

</div></div>**Achtung**: das Logfile auf dem Server wird so logischerweise täglich rotiert, via Mail versendet, in das (vorher anzulegende) Unterverzeichnis /var/log/maillog.old verschoben und 365 Tage aufgehoben.