Überprüfung von Exitcodes

T

Tiger-Grey

Grünschnabel
Hi @all,
erstmal GROßES LOB ANS BOARD ist echt KLASSE 8)
kann mir jemand erklären, wie ich prüfen kann ob das script auch tatsächlich den rsync gemacht hat.
Weil im Logfile steht zwar immer das er alles gemacht hat, aber eigendlich stimmt das nicht.Denn wenn der rsync nicht durchläuft schreibt das script ja "ALLES OK"


#!/bin/bash

# Backup Log Datei
#--------------------
BACKUPLOG=/var/log/Blindcopy/blindcopy.log

echo "---------------------------------------------------------">>$BACKUPLOG
echo "- starting Blindcopy date+"%Y-%m-%d_%H:%M:%S"`-">>$BACKUPLOG
echo "---------------------------------------------------------">>$BACKUPLOG

#Mounten der Zielpartition
mount /mnt/BackupFiles

echo " Mounten Erfolgreich">> $BACKUPLOG

#Kopieren der Daten von daten ins Zielverzeichnis

rsync -auvz /rechner1/daten /mnt/BackupFiles/datenBC

echo " ">> $BACKUPLOG

echo "Kopieren der Daten ins Zielverzeichnis erfolgreich!">> $BACKUPLOG

#Unmounten der Zielpartition
umount /mnt/BackupFiles
echo " UnMounten Erfolgreich!">> $BACKUPLOG

echo "---------------------------------------------------------">> $BACKUPLOG
echo "- end Blindcopy `date +"%Y-%m-%d_%H:%M:%S"` -">> $BACKUPLOG
echo "---------------------------------------------------------">> $BACKUPLOG


Wär echt cool , wenn mir jemand helfen könnte.:hilfe2:
 
Schau Dir mal die man-Page der bash an. Zum einen ist der Exit-Code des vorhergehenden Prozesses in $? gespeichert. Ausserdem kann man sie durch Tests (man test) auswerten. Zum Beispiel geht:

Code:
if rsync ...; then echo success ...
rsync ... && echo success ...
 
ok 3300 zeilen manpage überflogen und nix gefunden.
pfrt lass ichs halt so.
aber dennoch danke, bin evtl a bissl zu doof da durchzusteigen
 
mit echo $? bekommst du den return-Wert wenn er 0 ist, dürfte es ohne Probleme geloffen sein.
 
ok 3300 zeilen manpage überflogen und nix gefunden.

Vom Überfliegen allein, ist noch keiner zum Überflieger geworde.:oldman
Es kommt darauf an, das Richtige zu suchen, zu lesen und zu verstehen.
Wenn du die Manpage zu bestimmten Programmen liest, findest du in den meisten Fällen auch den zu erwartende Exit-Wert.

Was du wohl (überfliegend) überlesen hast steht gleich am Beginn:

...
? Expands to the status of the most recently executed foreground pipeline.

Jetzt noch ein wenig mit dem Wissen, wie man solche Variablen ausgibt kombiniert:
-> Ein $ davor:
also wird diese Variable ausgegeben indem ich:
Code:
echo $?
schreibe oder, prüfe ob gleich null oder oder...

Beachte aber, dass das sofort nach dem command geschehen muss, da z.B. die Verwendung von echo selbst diese Variable wieder verändert- nämlich auf den Exitstatus von echo!
Deshalb ist es gut diese Variable in einer localen eigenen Variable zu speichern und dann auszuwerten.
z.B.
Code:
grep -i "pattern" /path/inputfile;
ERRORGREP=$?;
if [ -z $ERRORGREP ]; then
...
fi

Gruß Wolfgang
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Shellscript unerwartetes Dateiende

Queue für copy Script

Shell script

Zurück
Oben