Logdateien per Email versenden

Unter einem Linux-Serversystem laufen jeden Tag viele Logdateien auf, die man sich am besten täglich ansehen sollte. Aus Zeitmangel vieler Systemadministratoren kann man sich diese Logdateien per Email z. B. zusenden lassen. Mit Hilfe eine kleinen Skriptes (s. u.) ist es möglich dies unter der Verwendung eines Crontab-Eintrages dies zu automatiseren. Folgendes Beispielskript ist mit Linux Standardmitteln verwendet worden:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
echo "Setzen der Variablen des Sktiptes!"
Variable="$(date +%d.%m.%Y) $(date +%k:%M) Uhr"
echo "LogFiles werden nun gepackt!"
tar -czvf /root/logging_"$Variable".tgz /var/log >/dev/null 2>&1 echo "Email wird vorbereitet!"
cat /root/logging* | mail -s LogFiles_"$Variable" mail@foo.bar
echo "LogFiles wurden per Anhang versandt!"
sleep 200
rm /root/logg*
echo "Exit now ..."
exit 0

Folgende Zeilen mal kurz erklärt! Die Variable „Variable“ enthält Datum und Uhrzeit des Serversystemes, welches für die gepackte Datei als Dateiname (Bsp: logging_DATUM UHRZEIT.tgz) verwendet wird. Diese gepackte Datei enthält alle Dokumente aus dem Systemordner /var/log. Mit Hilfe des Befehls cat werden alle Dokumente mit dem Anfang logging* in die Email mail@foo.bar gesandt. Als Betreff der Email wird der Dateiname des zu versendenden Datei genommen. Nach versandt der Email bleibt das Script für eine Zeit von 200 Sekunden stehen und wartet bis diese Zeit vorbei ist. Anschliessend werden alle Dokumente mit dem Anfang logg* aus dem Ordner /root gelöscht. Das Programm beendet sich dann selber.

Zusätzlich habe ich auf dem Linux Serversystem noch den Eintrag für die Crontab unter dem Benutzer Root erstellt:

1
0    22   *   *   *   7  /root/mailling.sh

Dieser Eintrag ist dazu da, dass es nach 7 Tagen um 22 Uhr anläuft und die Aufgaben in der Datei namens mailling.sh im Ordner /root ausführt.

Das wars…

Gruß,
Adrian Sauer

Dieser Beitrag wurde unter Linux abgelegt und mit , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

14 Antworten zu Logdateien per Email versenden

  1. Sven sagt:

    Danke, dass ist das erste mal das ich bei Google auf Position 1 genau das finde, was ich gesucht habe. Eine Frage habe ich noch (eigentlich zwei 😉 ) : Wie groß ist die Datei und wäre ein täglicher Versand nicht besser?

    • Adrian sagt:

      Hallo Sven, dann werde ich mal auf deine Fragen antworten. 😉 Die Dateigröße auf meinem laufenden System beträgt ca. 2 Megabyte (gepackt). Wenn Du möchtest kannst Du Dir die Datei auch gerne jeden Tag zu senden. Aus bequämlichkeit habe ich es aber auf einmal die Woche begrenzt.

      Viel Grüße

  2. Sven sagt:

    Irgendwas habe ich falsch gemacht 😉 . Bei mir wird keine Datei angehängt, sondern in der Mail ein Kauderwelch angezeigt, mit dem man nichts anfangen kann 😉

    • Adrian sagt:

      Überprüfe nochmal den Inhalt deiner Datei mit dem o. g. Quellcode. Vielleicht hast Du ja ein paar Sonderzeichen in dem Quellcode, die evtl gar nicht dahin gehören.

      Ich hab es nochmal von oben kopiert und bei mir getestet. Läuft.

      • Sven sagt:

        Kann es vielleicht sein, dass ich irgendein Programm nachinstallieren muss, welches sonst Standard ist und nur wieder bei mir fehlt? Habe das jetzt noch einmal durchgesehen, stimmt aber zu 99 Prozent mit deinem Script überein, habe halt die Mail-Adresse geändert 😉

        • Adrian sagt:

          Hi, der Tar-Packer sollte eigentlich bei jeder Linux Distro dabei sein und Mail hast Du mit hoher Wahrscheinlichkeit auch auf deinem System installiert.

          Kannst Du ja gerne mal prüfen (mail und tar) und die Befehle mal manuell ausführen. Sollte klappen. Die einzige Möglichkeit wäre noch, wenn Du der mailing.sh Datei die richtige Gruppenzugehörigkeit und Rechte (777) vergibst.

          • Sven sagt:

            Also ich habe es jetzt mal Local auf meinem Rechner mit Suse Linux getestet, da funktioniert das Script ohne Probleme. Auf dem Server bekomme ich es aber nicht zum laufen, weiß auch nicht, was ich dort falsch mache. Naja, dann verschiebe ich das erst mal um ein paar Tage und versuche es dann noch einmal 😉

  3. Erik sagt:

    Hallo Adrian. Ich verwalte selber ein paar Linux-Server unterschiedlicher Art und Nutzung. Die Frage ist jetzt, ob dein Script einen lokalen Mailserver voraussetzt und falls ja, ob man das umgehen kann?

    Grüße
    Erik

  4. stepp sagt:

    Wie sieht das ganze aus, wenn man eine *.tar Datei als Anhang haben möchte? Beim öffnen der Mail ist das, was als Anhang sein sollte in der Mail als Kauderwelsch und nicht als Datei.
    Dieses Script liese sich ja abgewandelt auch zum übermitteln von backup.tar benutzen.

    Gruß
    Stepp

  5. Jan sagt:

    Hallo,

    habe das selbe Problem, im Nachrichtenquelltext sehe ich die Logfiles (in base64 codiert, also nur schrott 😉 )

    Ich hatte dann auch versucht, das Archiv an die Mail anzuhängen mit$
    mail -s LogFiles_“$Variable“ -a /root/logging_“$Variable“.tgz mail@foo.bar
    funktioniert aber leider nicht. Skript hängt sich auf: letzte Ausgabe: „LogFiles werden nun gepackt!“ komischerweiße also nicht einmal E-Mail wird vorbereitet.

    Hat jemand einen Tipp für mich?

  6. Pingback: Script-> Logfiles automatisch per Email zuschicken lassen - Linux: Linux-Forum

  7. Andreas Schier sagt:

    Hi,
    wie kann ich ohne installierten Mailserver dennoch die Mail versenden lassen?
    Einen Mailserver möchte ich aus Relay Gründen nicht installieren, der wird auch nicht benötigt.
    Danke

  8. Jürgen Sörensen sagt:

    Hi,
    das ist ein interessantes script. Auf dem mac bekomme ich aber den langen Bindestrich nicht hin, kann mir jemand nen tipp geben?
    danke
    soeri

  9. Adrian sagt:

    Hi Jürgen, nimm mal zwei Bindestriche. Das sollte auch gehen.

    Viele Grüße

Kommentare sind geschlossen.