michi1983
Goto Top

E-Mail Benachrichtigung von Ubuntu Server mit ssmtp

Hallo Admins,

ich habe einen Ubuntu Server 12.04 LTS.
Mittels Rsnapshot wird auf einen externen Datenträger und zusätzlich auf einen entfernten Rechner täglich, wöchentlich und monatlich ein Backup erstellt.

Ich habe mir ssmtp installiert und das funktioniert soweit mit einem Testfile ganz gut.
ssmtp meine_e-mailadresse@domain.com < testmail.txt

Meine Frage ist jetzt, wie ich dem System sagen kann, dass er mir nach jedem (hoffentlich kommt das nie vor) fehlerhaften Backup eine E-Mail schickt. Muss ich das im /etc/cron.d/rsnapshot mitgeben? Gibt es dafür eine eigene Config-Datei?

Schönen Abend,

Gruß,
Michi

Edit: Das Logfile liegt in
var/log/rsnapshot

Content-Key: 202835

Url: https://administrator.de/contentid/202835

Printed on: April 20, 2024 at 07:04 o'clock

Mitglied: 64748
64748 Mar 05, 2013 updated at 19:53:16 (UTC)
Goto Top
Guten Abend,

ich würde den Rückgabewert von rsnapshot untersuchen. Der Cronjob sollte demnach nicht einfach rsnapshot starten, sondern ein Skript welches rsnapshot startet und den Rückgabewert abfängt
RETURNVAL=$(rsnapshot ....)
if [ $RETURNVAL != 0 ]; then
    ssmtp meine_e-mailadresse@domain.com < errormail.txt
fi
Dazu musst Du Dir aber die möglichen Rückgabewerte von rsnapshot ansehen, z.B. hier http://www.rsnapshot.org/rsnapshot.html#exit_values
Du kannst natürlich auch dafür sorgen, dass Errorausgaben mit in den Mailtext kommen.
tail /var/log/rsnapshot >> errormail.txt

Ich habe allerdings keine Erfahrung mit rsnapshot, vielleicht gibt es bessere Möglichkeiten.

Markus
Member: michi1983
michi1983 Mar 06, 2013 at 08:42:27 (UTC)
Goto Top
Hallo Markus,

danke für deine Antwort.

Verstehe ich das richtig, dass ich bei
RETURNVAL=$(rsnapshot ....)
bei den Punkten daily, weekly bzw. monthly einfüge?

Und wir bei
tail /var/log/rsnapshot >> errormail.txt
der Inhalt der Logfile automatisch ganz "hinten" in der errormail.txt angefügt bzw. wo muss ich das tail einbauen damit es in der korrekten Reihenfolge abgearbeitet wird?

Gruß,
Michi
Mitglied: 64748
64748 Mar 06, 2013 updated at 09:41:15 (UTC)
Goto Top
Guten Morgen,

also die Punkte stehen für die Optionen, in Klammern steht der komplette Befehl, so wie Du ihn auf der Kommandozeile eingibst wenn es nicht per Skript geschieht. Dann sollte die variable $RETURNVAL (die Du natürlich auch anders nennen kannst) die Ausgabe des Befehls beinhalten. Ggf. musst Du die Ausgabe von STDERR umleiten http://www.thomas-krenn.com/de/wiki/Bash_sdtout_und_stderr_umleiten

Jedenfalls kannst Du anhand von $RETURNVAL herausfinden, ob rsnapshot ohne Fehler durch gelaufen ist.

Ich hab's gerade mal installiert, hier ein Beispiel auf der Kommandozeile:
samsung:~# RETURNVAL=$(rsnapshot 2>&1)
samsung:~# echo $RETURNVAL
rsnapshot 1.3.1 Usage: rsnapshot [-vtxqVD] [-c cfgfile] [command] [args] Type "rsnapshot help" or "man rsnapshot" for more information.

Zum Logfile: tail gibt die letzten 10 Zeilen der Datei aus, das kannst Du aber mit der -n Option ändern. Du muss es ausprobieren, führe den rsnapshot-Befehl mal auf der Kommandozeile so aus, dass ein Fehler passiert und schau Dir danach das Logfile an. Hänge soviele Zeilen an den Mailtext an, dass Du weißt was passiert ist. (Meistens reicht es ja, wenn Du weißt, dass es nicht geklappt hat, aber wenn der Rechner 100 km entfernt steht, dann ist es vielleicht sinnvoll wenn die Mail Dir sagt, dass Du vorher noch eine Festplatte kaufen musst face-wink)

Markus