qeldroma
26-04-2006, 10:02
Hallo zusammen,
ich möchte innerhalb eines Backup-Skriptes mehrerer hosts(/etc/backup/hosts.cfg) auf die Ausgabe von rsync reagieren. Das Ergebnis wird gemailt..
Folgendes mein Ziel:
Wenn rsync erfolgreich ist, steht in einem String nur eine Bestätigung des Backups.
Sollte rsync irgendeine Ausgabe liefern, so soll diese gespeichert werden, eine Fehlertext und dann die Ausgabe angefügt werden. Anschließend soll das Skript aber weiter fortfahren(nächster host).
Mein Weg scheint nicht zu funktionieren, denn am Beispiel der hosts 192.168.0.1 - 8 - wobei 192.168.0.7 nicht existiert - sollte das Skript also einen Fehler protokollieren. Trotzdem wird der Host als "succeeded" angezeigt und die Fehlerausgabe von rsync landet in der Konsole :(
#!/bin/bash
exclude="/etc/backup/exclude.cfg"
exclude_tmp="/tmp/bak.tmp"
nice="19"
what="/"
bak_path="/BACKUP"
options="-a --delete"
mailtext=$(cat /etc/backup/hosts.cfg|while read host; do
where="$bak_path/$host/`date +%u`"
exclude_ip_file="/etc/backup/$host.cfg"
cat "$exclude" > "$exclude_tmp"
cat "$exclude_ip_file" >> "$exclude_tmp"
mkdir -p "$where"
output="`nice -n $nice /usr/bin/rsync $options --exclude-from="$exclude_tmp" $host:$what $where`"
if [ ! "$output" ]; then
echo "**** Host $host succeeded."
else
echo -e "!!!! Host $host failed\nOutput was:\n$output"
fi
touch $where
touch $bak_path/$host
done)
mailtext="*************************************\n** Nagios - Backupresults **********\n\n`date`\n$mailtext"
/usr/bin/printf "%b" "$mailtext" | /bin/mail -s "DAILY BACKUP RESULTS" technik55@dummy.net
ich möchte innerhalb eines Backup-Skriptes mehrerer hosts(/etc/backup/hosts.cfg) auf die Ausgabe von rsync reagieren. Das Ergebnis wird gemailt..
Folgendes mein Ziel:
Wenn rsync erfolgreich ist, steht in einem String nur eine Bestätigung des Backups.
Sollte rsync irgendeine Ausgabe liefern, so soll diese gespeichert werden, eine Fehlertext und dann die Ausgabe angefügt werden. Anschließend soll das Skript aber weiter fortfahren(nächster host).
Mein Weg scheint nicht zu funktionieren, denn am Beispiel der hosts 192.168.0.1 - 8 - wobei 192.168.0.7 nicht existiert - sollte das Skript also einen Fehler protokollieren. Trotzdem wird der Host als "succeeded" angezeigt und die Fehlerausgabe von rsync landet in der Konsole :(
#!/bin/bash
exclude="/etc/backup/exclude.cfg"
exclude_tmp="/tmp/bak.tmp"
nice="19"
what="/"
bak_path="/BACKUP"
options="-a --delete"
mailtext=$(cat /etc/backup/hosts.cfg|while read host; do
where="$bak_path/$host/`date +%u`"
exclude_ip_file="/etc/backup/$host.cfg"
cat "$exclude" > "$exclude_tmp"
cat "$exclude_ip_file" >> "$exclude_tmp"
mkdir -p "$where"
output="`nice -n $nice /usr/bin/rsync $options --exclude-from="$exclude_tmp" $host:$what $where`"
if [ ! "$output" ]; then
echo "**** Host $host succeeded."
else
echo -e "!!!! Host $host failed\nOutput was:\n$output"
fi
touch $where
touch $bak_path/$host
done)
mailtext="*************************************\n** Nagios - Backupresults **********\n\n`date`\n$mailtext"
/usr/bin/printf "%b" "$mailtext" | /bin/mail -s "DAILY BACKUP RESULTS" technik55@dummy.net