Wie in einem älteren Artikel bereits beschrieben, setze ich zur Synchronisation meiner Daten gerne “rsync” ein. Nun möchte ich Euch zeigen wie Ihr Fehler in Euren Bash-Skripten loggen und Euch per E-Mail benachrichtigen lassen könnt.
Ich gehe hier nur auf die Komponenten ein die für das Logging und die E-Mail Benachrichtigung relevant sind.
Eine Anleitung für rsync findet Ihr in meinem Artikel Linux: Dateien mit rsync synchron halten
Bevor ich auf das Skript eingehe, legen wir vorab das Verzeichnis rsync unter /var/log/ und darunter die Datei tortuga.log wie folgt an:
mkdir /var/log/rsync/
touch /var/log/rsync/tortuga.log
Nachdem diese Vorarbeit erledigt ist widmen wir uns nun Schritt für Schritt dem Skript.
Zuerst legen wir die Variablen fest:
ERRORLOG Hier kommt der Pfad zu der neu angelegten Log-Datei hin
ADRESSE Eure E-Mail Adresse an die die Benachrichtigung versendet werden soll
Der Teil 2> $ERRORLOG während der Synchronisation, schreibt die Fehler ins Logfile.
if [ -s “$ERRORLOG” ] | prüft ob im Logfile Meldungen enthalten sind, |
cat $ERRORLOG | mail -s “RSYNC ERROR: Tortuga fehlgeschlagen” $ADRESSE | ist dies der Fall, kopiert er den Inhalt der Logdatei in eine E-Mail und versendet diese mit dem angegebenen Betreff an die E-Mail Adresse |
sleep 10 | Hier legt das Skript eine 10 Sekündige Wartepause ein, |
echo -n “” > $ERRORLOG | bevor mit diesem Befehl das Logfile wieder geleert wird. |
Der Inhalt einer E-Mail, sieht dann in etwa so aus:
rsync: opendir "/var/tortuga/" failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1060) [sender=3.0.7]
Diese werden natürlich nur im Fehlerfall generiert. Läuft das Skript ohne Probleme gibt es auch keine E-Mail.
Anleitung wurde mit Ubuntu 12.04 erstellt
Fazit:
Am Anfang habe ich mich einfach darauf verlassen, dass die Synchronisation funktioniert und habe damit natürlich prompt Schiffbruch erlitten. Deshalb habe ich mir auf diese Weise angewöhnt, mir eine Nachricht zukommen zu lassen wenn ein Skript fehlschlägt. Es kommt zwar recht selten vor, aber ab und zu eben doch.
Natürlich lässt sich das ganze auf beliebige Skripte adaptieren.
Klar soweit?
Euer RSB