Shellskript funktioniert nicht richtig


#1
Einen wunderschönen guten Morgen liebe Welt,

ich habe mal eine Frage. Ich habe ein Backup Skript auf einem Linux Debian laufen, nach der Erstellung des Backups soll eine Mail als Information an einen bestimmten Account versendet werden. Der Cronjob läuft jeden Abend.

Die Backups werden erstellt lediglich, dass versenden der Mails funktioniert nicht automatisiert. Der Server auf dem das Skript läuft ist der Mailserver.

Nachfolgend füge ich den Code ein evtl. hat sich ein Fehler eingeschlichen den ich nicht sehe.


_______________________________________________________________________________________________________
BACKUPDIR=/store/backup/home
TWOWEEKBACKUP=twoweekbackup
ONEWEEKBACKUP=oneweekbackup
TSNAME=timestamp.snar
BACKUPNAME=home
DIRS=/home

if [ "$1" == "complete" ]; then

#Komplettes Backup
MYDATE=complete

#Alte Timestamps loeschen
rm -f $BACKUPDIR/$TSNAME

#Twoweekbackups loeschen
rm -rf $BACKUPDIR/$TWOWEEKBACKUP.$BACKUPNAME.d

#Oneweekbackups in Ordner Twoweekbackup umbenennen
mv -f $BACKUPDIR/$ONEWEEKBACKUP.$BACKUPNAME.d $BACKUPDIR/$TWOWEEKBACKUP.$BACKUPNAME.d

#Backups in Ordner Oneweekbackup verschieben
mkdir $BACKUPDIR/$ONEWEEKBACKUP.$BACKUPNAME.d
mv -f $BACKUPDIR/$BACKUPNAME.*.tar.bz2 $BACKUPDIR/$ONEWEEKBACKUP.$BACKUPNAME.d

else

#Inkrementelles Backup
MYDATE=$(date +%y%m%d)



fi

#Abzug erstellen

#Backup ungepackt
#tar czf $BACKUPDIR/$BACKUPNAME.$MYDATE.tar -g $BACKUPDIR/$TSNAME $DIRS 2> /dev/null
#Backup gepackt
tar --create --preserve-permissions --bzip2 --file=$BACKUPDIR/$BACKUPNAME.$MYDATE.tar.bz2 --listed-incremental=$BACKUPDIR/$TSNAME $DIRS 2> /dev/null

echo "Subject: $MYDATE $MYBACKUPNAME Backup erfolgreich" | sendmail mail@adresse

_____________________________________________________________________________________________________________________


Wenn ich den Sendmail Befehl manuell absetze funktioniert der Mailversand.

Ich verlange keine fertige Lösung sondern einfach einpaar denkanstöße :)

Vielen dank im vorraus.

Mit freundlichen Grüßen

euer Rucksack
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hi,

was steht im /var/log/mail.log?
Normalerweise verschickt cron selbst eine Mail, sobald ein Script eine Ausgabe hat. Somit kannst du dir normal das "| sendmail mail@adresse" sparen und stattdessen in der Cronconfig die "MAILTO" Variable auf deine Adresse setzen.

Grüsse,
BK
 

ikosaeder

Teekannen-Agnostiker
#4
Hast du mal versucht, das ganze Skript händisch aufzurufen? Vielleicht bekommst du eine Fehlermeldung. Ansonsten müsste Cron die Fehler auch irgendwo loggen z.B. in /var/log/cron oder in /var/log/messages.
Von hier: http://unix.stackexchange.com/questions/207/where-are-cron-errors-logged
folgender Tipp:
You can always explicitly send the job output to a log file:
0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1
 

melmager

Erfahrenes Mitglied
#5
Ich habe mir angewöhnt in Scripten die per Cronjobs laufen immer die absolute Pfadangabe anzugeben
Enviroment Variablen werden nicht immer ausgewertet - Bedeutet: kann sein das während der laufzeit nicht bekannt ist wo das angesprochene Programm liegt und wird daher nicht ausgeführt
 
#6
Hallo ihr lieben entschuldigt bitte, dass ich erst jetzt antworte ich musste mich um einige anderen sachen kümmern und bin überhaupt nicht mehr hierzu gekommen. Das Problem, dass die mail nciht versendet wird schalten wir mal zurück mir ist ein viel größeres aufgefallen. Mein Vorgänger hat das Skript erstellt aber anscheinend nicht getestet. Es werden zwar alle Ordner der Mailbox kopiert aber kein Inhalt - keine einzige Mail wird gesichert. Erstmal will ich das problem gelöst bekommen, könnt Ihr erkennen warum in diesem Skript nicht eine einzige mail gesichert wird?

Genutzt wird Dovecot.

Vielen dank für eure zügigen Antworten zu meinem 1. Post.
 

Neue Beiträge