bastian42
Goto Top

QNAP mail versenden

Hallo Mitadmins,

folgende Ausgangssituation:

Ich habe ein QNAP T-469L mit aktueller Firmware. Hier habe ich per NFS mir ein Laufwerk per NFS gemounted.
Nun mache ich jede Nacht ein Backup mittels tar. Dies funktioniert soweit ganz gut. Was mir jedoch fehlt ist eine
irgendwie geartete Mailbenachrichtigung, ob das Backup funktioniert hat oder nicht.

Um eines vorweg zu nehmen, ich mache das Backup bewusst nicht inkrementel, es handel sich um einige wenige
MB. Somit lohnt der Aufwand meiner Meinung nach nicht.

So sieht das script aktuell aus:

#!/bin/bash
DATE=$(date +%Y-%m-%d-%H%M%S)

BACKUP_DIR="/share/backup-dir/privat/Dokumente"
SOURCE="/share/privat/Dokumente"
tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE

Habt Ihr eine Idee, wie ich das hinbekommen kann?


Besten Dank im Voraus für Eure Hilfe.

gruß
Bastian

Content-ID: 252883

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

colinardo
Lösung colinardo 23.10.2014, aktualisiert am 24.10.2014 um 11:12:24 Uhr
Goto Top
Hallo Bastian,
habe gerade mein QNAP nicht zur Hand, aber das müsste ungefähr so machbar sein. Ich meine Sendmail müsste auf dem QNAP per default die integrierten SMTP-Daten der Mail-Alertfunktion nutzen wenn man sie ohne Parameter aufruft, musst du mal ausprobieren.

#!/bin/bash
# Mail-Settings -----------
MAILFROM="user@domain.de"  
MAILTO="user@domain.de"  
FAILSUBJECT="QNAP Backup fehlgeschlagen"  
FAILBODY="Das Backup des Qnap ist fehlgeschagen mit ErrorCode:"  
SUCCESSSUBJECT="QNAP Backup erfolgreich"  
SUCCESSBODY="Backup wurde erfolgreich abgeschlossen"  
# -------------------------
DATE=$(date +%Y-%m-%d-%H%M%S)

BACKUP_DIR="/share/backup-dir/privat/Dokumente"  
SOURCE="/share/privat/Dokumente"  
tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE
result=$?
if [[ $result -ne 0 ]] ;then 
  echo -e "To: $MAILTO \nFrom: $MAILFROM \nSubject: $FAILSUBJECT \n\n$FAILBODY $result\n" | sendmail -t  
else
  echo -e "To: $MAILTO \nFrom: $MAILFROM \nSubject: $SUCCESSSUBJECT \n\n$SUCCESSBODY\n" | sendmail -t  
fi
Grüße Uwe

-edit- gerade auf einem QNAP TS219P getestet.
bastian42
bastian42 23.10.2014 um 18:42:36 Uhr
Goto Top
Hallo Uwe,

vielen Dank. Aber wenn ich es richtig verstehe, schickt dieses Ding "nur" eine mail wenn etwas schief läuft.
Ich hätte jedoch auch gerne eine Erfolgsmeldung. Ansonsten weiss ich ja nicht ob es funktioniert hat. Es
könnte ja auch schlicht sein, dass der cronjob nicht aufgerufen wird.

Kannst Du mir da auch noch helfen?

Danke im Voraus.

gruß
Bastian
colinardo
Lösung colinardo 23.10.2014, aktualisiert am 06.11.2014 um 14:56:51 Uhr
Goto Top
Zitat von @bastian42:
vielen Dank. Aber wenn ich es richtig verstehe, schickt dieses Ding "nur" eine mail wenn etwas schief läuft.
Ich hätte jedoch auch gerne eine Erfolgsmeldung. Ansonsten weiss ich ja nicht ob es funktioniert hat. Es
könnte ja auch schlicht sein, dass der cronjob nicht aufgerufen wird.

Kannst Du mir da auch noch helfen?
ist im else Teil der IF-Abfrage ergänzt ...
bastian42
bastian42 23.10.2014 aktualisiert um 19:21:12 Uhr
Goto Top
Hallo,

danke nochmal.. ging ja echt fix. jetzt hat er nach erfolgreichem backup ein mail gesendet.
leider ist der betreff und der text leer face-sad das selbe bei einem Fehler. Er sendet die Mail
aber leider leer.


FehlerMeldung auf der console: tar: Error is not recoverable: exiting now
Wobei der Fehler so provoziert wurde.


gruß
Bastian
colinardo
colinardo 23.10.2014 aktualisiert um 19:34:17 Uhr
Goto Top
hmm, kann nur sagen das es hier auf einem QNAP TS219P soweit läuft...
Ruf den tar-Befehl mal manuell auf der Konsole auf und gib direkt danach ein
echo $?
ein, was er dann jeweils als Exitcode ausgibt
bastian42
bastian42 24.10.2014 um 11:12:51 Uhr
Goto Top
Danke Dir colinardo. Es funktioniert. Der Fehler lag bei mir.

Gruß
Bastian
bastian42
bastian42 06.11.2014 um 09:01:55 Uhr
Goto Top
Hallo,

ich habe leider (wahrscheinlich) ein kleines Problem. Da script läuft und funktioniert.
Wenn ich es jedoch per cronjob laufen lasse schickt er keine Mail, macht aber das
Backup.

Ich habe folgende Einträge ausprobiert

Versuch1:

0 10 * * * /root/backup.sh 2>/dev/null

Versuch2:
0 10 * * * /root/backup.sh

Hat jemand eine Idee, woran es liegen kann?

gruß
Bastian
colinardo
colinardo 06.11.2014 aktualisiert um 12:30:08 Uhr
Goto Top
Hat jemand eine Idee, woran es liegen kann?
hmm, auch als Cronjob gehen hier die Mails einwandfrei raus! Wurde auch die richtige Crontab des admin Accounts angepasst ? Was bringt which sendmail für einen Pfad in der Konsole ?
Gersen
Gersen 06.11.2014 aktualisiert um 12:40:51 Uhr
Goto Top
Hallo,

mögliche Ursache: CRON gibt nur ein Minimum an Umgebungsvariablen an die aufgerufenen Skripte weiter. D.h., es ist möglich, dass er das "sendmail" (oder einen der anderen Befehle) nicht findet (PATH-Variable).

Lösung: Entweder im Skript (bzw. generell in Crontab-File) die PATH-Variable setzen oder für alle Kommandos absolute Pfade verwenden (siehe auch hier).

Gruß,
Gersen
bastian42
bastian42 06.11.2014 um 14:58:03 Uhr
Goto Top
which sendmail
/usr/sbin/sendmail

eingtragen habe ich es als admin mittels crontab -e
colinardo
Lösung colinardo 06.11.2014, aktualisiert am 07.11.2014 um 08:11:53 Uhr
Goto Top
Zitat von @bastian42:

which sendmail
/usr/sbin/sendmail
OK der Pfad ist hier ebenfalls gleich; dann trag mal den Pfad oben im Script nach. Anstatt sendmail -t also /usr/sbin/sendmail -t.
bastian42
bastian42 07.11.2014 aktualisiert um 08:14:01 Uhr
Goto Top
Ok, nun passt es. Nun sieht der Code bei mir so aus. Danke nochmal für Deine Hilfe

#!/bin/bash
# Mail-Settings -----------
MAILFROM="user@domain.de"  
MAILTO="user@domain.de"  
FAILSUBJECT="QNAP Backup fehlgeschlagen"  
FAILBODY="Das Backup des Qnap ist fehlgeschagen mit ErrorCode:"  
SUCCESSSUBJECT="QNAP Backup erfolgreich"  
SUCCESSBODY="Backup wurde erfolgreich abgeschlossen"  
# -------------------------
DATE=$(date +%Y-%m-%d-%H%M%S)

BACKUP_DIR="/share/backup-dir/privat/Dokumente"  
SOURCE="/share/privat/Dokumente"  
tar -cjpf $BACKUP_DIR/backup-$DATE.tar.bz2 $SOURCE
result=$?
if [[ $result -ne 0 ]] ;then 
  echo -e "To: $MAILTO \nFrom: $MAILFROM \nSubject: $FAILSUBJECT \n\n$FAILBODY $result\n" | /usr/sbin/sendmail -t  
else
  echo -e "To: $MAILTO \nFrom: $MAILFROM \nSubject: $SUCCESSSUBJECT \n\n$SUCCESSBODY\n" | /usr/sbin/sendmail -t  
fi