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-Key: 252883

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

Printed on: April 25, 2024 at 01:04 o'clock

Member: colinardo
Solution colinardo Oct 23, 2014, updated at Oct 24, 2014 at 09:12:24 (UTC)
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.
Member: bastian42
bastian42 Oct 23, 2014 at 16:42:36 (UTC)
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
Member: colinardo
Solution colinardo Oct 23, 2014, updated at Nov 06, 2014 at 13:56:51 (UTC)
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 ...
Member: bastian42
bastian42 Oct 23, 2014 updated at 17:21:12 (UTC)
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
Member: colinardo
colinardo Oct 23, 2014 updated at 17:34:17 (UTC)
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
Member: bastian42
bastian42 Oct 24, 2014 at 09:12:51 (UTC)
Goto Top
Danke Dir colinardo. Es funktioniert. Der Fehler lag bei mir.

Gruß
Bastian
Member: bastian42
bastian42 Nov 06, 2014 at 08:01:55 (UTC)
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
Member: colinardo
colinardo Nov 06, 2014 updated at 11:30:08 (UTC)
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 ?
Member: Gersen
Gersen Nov 06, 2014 updated at 11:40:51 (UTC)
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
Member: bastian42
bastian42 Nov 06, 2014 at 13:58:03 (UTC)
Goto Top
which sendmail
/usr/sbin/sendmail

eingtragen habe ich es als admin mittels crontab -e
Member: colinardo
Solution colinardo Nov 06, 2014, updated at Nov 07, 2014 at 07:11:53 (UTC)
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.
Member: bastian42
bastian42 Nov 07, 2014 updated at 07:14:01 (UTC)
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