我有一个脚本,将通过mysqldump采取MySQL数据库的备份。 如果转储成功或失败,我想在此脚本中添加另一个选项以发送自动电子邮件。
这是脚本:
#!/bin/sh BACKUP=/data/backup/sql2/new_backup/daily cd $BACKUP mkdir `date '+%d-%m-%Y'` NOW=$(date +"%d-%m-%Y") MUSER="root" MPASS="mypass" MHOST="sql4" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE done
我怎样才能做到这一点?
如果一切顺利, mysqldump将以退出码0结束。 你可以使用这个:
#!/bin/sh BACKUP=/data/backup/sql2/new_backup/daily cd $BACKUP mkdir `date '+%d-%m-%Y'` NOW=$(date +"%d-%m-%Y") MUSER="root" MPASS="mypass" MHOST="sql4" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" MAIL="[email protected]" MAILER="$(which mail)" STATUSFILE="/tmp/statusfile.$NOW" echo "Backup report from $NOW" > $STATUSFILE DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE if [ "$?" -eq "0" ] then; echo "$db backup is OK" >> $STATUSFILE else echo "##### WARNING: ##### $db backup failed" >> $STATUSFILE fi done $MAILER -s "Backup report for $NOW" -- $MAIL < $STATUSFILE rm $STATUSFILE
我没有testing过这个,但是这是通用的方法。
#!/bin/bash TO="[email protected]" SUBJECT="testmail" MSG="bla bla bla" /usr/sbin/sendmail -t <<EOF to:$TO subject:$SUBJECT $MSG EOF
如有必要,您还可以添加“from”字段。