3
ネットワーク上のいくつかのホストのpostgresデータベースをバックアップするために夜間にcronで実行するスクリプトがあります。私は、終了ステータスを利用してスクリプトが失敗することを警告する方法を持っていますが、失敗した理由を教えてくれません。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