3
我有一個腳本,我每晚在cron中運行,爲我的網絡上的多臺主機備份一些postgres數據庫。我有一種方法可以通過利用退出狀態獲得腳本失敗的警報,但它並不告訴我爲什麼失敗。捕獲和郵寄bash腳本錯誤
基於以下代碼,我如何捕獲腳本運行時發生的任何錯誤,並將它們發送給我,以便我可以更好地瞭解發生的情況。
FILEDATE=`date '+%Y-%m-%d'`
BASEDIR=/u1/$1/db_dumps
PGDUMP=/path/to/pg_dump
HOST=$1
DB=$2
if [ $DB == all ]
then
for ALLDUMPS in db1 db2 db3
do
ssh [email protected]$HOST "env PGUSER=pguser PGPASSWORD=pgpassword $PGDUMP -Fc $ALLDUMPS" | pbzip2 > $BASEDIR/$FILEDATE-$HOST-$ALLDUMPS.dump.bz2
if [ $? -ne 0 ]
then mutt -s "dbdumper could not create a backup of $ALLDUMP from $HOST" [email protected] < /dev/null
fi
done
else
ssh [email protected]$HOST "env PGUSER=pguser PGPASSWORD=pgpassword $PGDUMP -Fc $DB" | pbzip2 > $BASEDIR/$FILEDATE-$HOST-$DB.dump.bz2
if [ $? -ne 0 ]
then mutt -s "dbdumper failed to create a backup of $DB from $HOST" [email protected] < /dev/null
fi
fi
與我的你的ssh語句。當我故意備份假數據庫時,它會生成一個錯誤(按預期),但不會使用任何此類信息填充$ stderr。輸出如下所示:http://pastebin.com/wKvjbaB1 – Joseph