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