Log Mailer

Skrevet af: Patrick Kerwood

For at sikre sin server, kan det være en god idé at tjekke sine logs igennem, i ny og næ. Men istedet for at finde dem manuelt og læse dem igennem, kan man lige så godt få dem serveret i en mail.

Alle system logs kan findes i “/var/logs”.

Dette gøres ganske simpelt med et Bash script, som vi sætter i gang med crontab. Forudsætningen for at du kan mail loggen til dig selv, er selvfølgelig at din server kan sende mails. Se evt. http://linuxbloggen.dk/category/smtp/

Start med at åbne en tekst fil. Jeg plejer at gemme alle mine små scripts i /usr/local/bin, på den måde kan jeg kører dem fra min shell.

nano /usr/local/bin/logmailer

Copy/Paste scriptet nedenunder.

Ændre variablen MAIL til din mail adresse og FIL til den fulde sti af din log. Gem og luk.

Første gang du kører den, laver den kopi af den log du har angivet. Og sender der derfor ikke noget. Fremadrette vil scriptet sammenligne den originale med kopien og sende dig differencen.

Sæt crontab til at kører den efter behov. Husk at scriptet skal bruge root privilegier, så enten skal bruge root’s crontab. Ellers skal du sætte din sudo bruger op, så den ikke kræver password og kører den med sudo.

Extra

Hvis man har nogle linjer, i loggen, som ikke er nødvendige og som fylder meget. Kan man få dem ekskluderet når den sender dem afsted. Dette gøres med grep.

Du skal finde nogle ord i linjen, som kun findes i de linjer, du vil have ekskluderet. I mit tilfælde er det pam_unix(cron:session).
Indsæt denne kode, imellem diff og mail kommandoerne, i linje 17.
grep -v "pam_unix(cron:session)"

Således at linjen kommer til at se sådan ud.

diff $FIL $FIL.mailbak |  grep -v "pam_unix(cron:session)" | mail -s "Log Mailer" -a "From: Log Mailer <no@mail.org>" $MAIL

14 jan 2013   | Alle · Scripts · Sikkerhed

Leave a Reply