gpt4 book ai didi

email - 捕获和邮寄 bash 脚本错误

转载 作者:行者123 更新时间:2023-11-29 09:30:52 25 4
gpt4 key购买 nike

我有一个脚本,每晚在 cron 中运行,为网络上的多个主机备份一些 postgres 数据库。我有一种方法可以利用退出状态提醒脚本失败,但它不会告诉我失败的原因。

根据以下代码,我如何捕获脚本运行时发生的任何错误,并将它们通过电子邮件发送给我,以便我更好地了解发生了什么。

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 root@$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" me@myemail.com < /dev/null
fi
done

else
ssh root@$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" me@myemail.com < /dev/null
fi
fi

最佳答案

从 ssh 命令捕获 stderr,并将其通过电子邮件发送给自己。

stderr=$( ssh root@$HOST "env PGUSER=user PGPASSWORD=pw $PGDUMP -Fc $ALLDUMPS" | 
pbzip2 2>&1 > "$BASEDIR/$FILEDATE-$HOST-$ALLDUMPS.dump.bz2" )
if [ $? -ne 0 ]; then
subj="dbdumper could not create a backup of $ALLDUMP from $HOST"
mutt -s "$subj" me@myemail.com <<< "$stderr"
fi

关于email - 捕获和邮寄 bash 脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com