mirror of
https://github.com/myvesta/vesta
synced 2025-08-19 21:04:07 -07:00
email notification in case of failed backup
This commit is contained in:
parent
934489f689
commit
7113dd6625
2 changed files with 45 additions and 12 deletions
|
@ -18,6 +18,9 @@ source $VESTA/func/main.sh
|
||||||
source $VESTA/func/domain.sh
|
source $VESTA/func/domain.sh
|
||||||
source $VESTA/func/db.sh
|
source $VESTA/func/db.sh
|
||||||
|
|
||||||
|
subj="Backup $user failed"
|
||||||
|
email=$(grep CONTACT $VESTA/data/users/admin/user.conf |cut -f 2 -d \')
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------#
|
#----------------------------------------------------------#
|
||||||
# Verifications #
|
# Verifications #
|
||||||
|
@ -36,6 +39,7 @@ while [ "$la" -ge "$BACKUP_LA_LIMIT" ]; do
|
||||||
echo
|
echo
|
||||||
sleep 60
|
sleep 60
|
||||||
if [ "$i" -ge "15" ]; then
|
if [ "$i" -ge "15" ]; then
|
||||||
|
echo "LoadAverage $i is above threshold" | mail -s "$subj" $email
|
||||||
echo "Error: LA is too high"
|
echo "Error: LA is too high"
|
||||||
log_event "$E_LA" "$EVENT"
|
log_event "$E_LA" "$EVENT"
|
||||||
exit $E_LA
|
exit $E_LA
|
||||||
|
@ -53,16 +57,17 @@ start_time=$(date '+%s')
|
||||||
|
|
||||||
# Creating temporary random directory
|
# Creating temporary random directory
|
||||||
tmpdir=$(mktemp -p $BACKUP -d)
|
tmpdir=$(mktemp -p $BACKUP -d)
|
||||||
|
if [ "$?" -ne 0 ]; then
|
||||||
|
echo "Can't create tmp dir $tmpdir" | mail -s "$subj" $email
|
||||||
|
echo "Error: can't create tmp dir"
|
||||||
|
log_event "$E_NOTEXIST" "$EVENT"
|
||||||
|
fi
|
||||||
|
|
||||||
# Prinitng status
|
# Prinitng status
|
||||||
echo "$(date "+%F %T") System backup for user $user"
|
echo "$(date "+%F %T") System backup for user $user"
|
||||||
echo "TMPDIR is $tmpdir"
|
echo "TMPDIR is $tmpdir"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# Addding backup and vesta version
|
|
||||||
echo "1.0" > $tmpdir/backup_version
|
|
||||||
echo "$VERSION" > $tmpdir/vesta_version
|
|
||||||
|
|
||||||
# Vesta
|
# Vesta
|
||||||
echo "-- VESTA --"
|
echo "-- VESTA --"
|
||||||
vst='yes'
|
vst='yes'
|
||||||
|
@ -123,7 +128,7 @@ then
|
||||||
# Parsing unsuspeneded domains
|
# Parsing unsuspeneded domains
|
||||||
conf="$USER_DATA/web.conf"
|
conf="$USER_DATA/web.conf"
|
||||||
for domain in $(search_objects 'web' 'SUSPENDED' "*" 'DOMAIN'); do
|
for domain in $(search_objects 'web' 'SUSPENDED' "*" 'DOMAIN'); do
|
||||||
check_exl=$(echo "$WEB"|grep -w $domain)
|
check_exl=$(echo "$WEB"|grep -w $domain)
|
||||||
if [ -z "$check_exl" ]; then
|
if [ -z "$check_exl" ]; then
|
||||||
web_list="$web_list $domain"
|
web_list="$web_list $domain"
|
||||||
fi
|
fi
|
||||||
|
@ -208,7 +213,7 @@ then
|
||||||
|
|
||||||
# Parsing unsuspeneded domains
|
# Parsing unsuspeneded domains
|
||||||
for domain in $(search_objects 'dns' 'SUSPENDED' "*" 'DOMAIN'); do
|
for domain in $(search_objects 'dns' 'SUSPENDED' "*" 'DOMAIN'); do
|
||||||
check_exl=$(echo "$DNS"|grep -w $domain)
|
check_exl=$(echo "$DNS"|grep -w $domain)
|
||||||
if [ -z "$check_exl" ]; then
|
if [ -z "$check_exl" ]; then
|
||||||
dns_list="$dns_list $domain"
|
dns_list="$dns_list $domain"
|
||||||
fi
|
fi
|
||||||
|
@ -243,7 +248,7 @@ then
|
||||||
# Parsing unsuspeneded domains
|
# Parsing unsuspeneded domains
|
||||||
conf="$USER_DATA/mail.conf"
|
conf="$USER_DATA/mail.conf"
|
||||||
for domain in $(search_objects 'mail' 'SUSPENDED' "*" 'DOMAIN'); do
|
for domain in $(search_objects 'mail' 'SUSPENDED' "*" 'DOMAIN'); do
|
||||||
check_exl=$(echo "$MAIL"|grep -w $domain)
|
check_exl=$(echo "$MAIL"|grep -w $domain)
|
||||||
if [ -z "$check_exl" ]; then
|
if [ -z "$check_exl" ]; then
|
||||||
mail_list="$mail_list $domain"
|
mail_list="$mail_list $domain"
|
||||||
fi
|
fi
|
||||||
|
@ -252,7 +257,6 @@ then
|
||||||
|
|
||||||
for domain in $mail_list; do
|
for domain in $mail_list; do
|
||||||
echo -e "$(date "+%F %T") $domain"
|
echo -e "$(date "+%F %T") $domain"
|
||||||
#mkdir -p $tmpdir/mail/$domain/accounts
|
|
||||||
mkdir -p $tmpdir/mail/$domain/conf
|
mkdir -p $tmpdir/mail/$domain/conf
|
||||||
mkdir -p $tmpdir/mail/$domain/vesta
|
mkdir -p $tmpdir/mail/$domain/vesta
|
||||||
|
|
||||||
|
@ -290,7 +294,7 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ] && [ "$DB" != '*' ]; then
|
||||||
|
|
||||||
# Parsing unsuspeneded domains
|
# Parsing unsuspeneded domains
|
||||||
for database in $(search_objects 'db' 'SUSPENDED' "*" 'DB'); do
|
for database in $(search_objects 'db' 'SUSPENDED' "*" 'DB'); do
|
||||||
check_exl=$(echo "$DB"|grep -w $database)
|
check_exl=$(echo "$DB"|grep -w $database)
|
||||||
if [ -z "$check_exl" ]; then
|
if [ -z "$check_exl" ]; then
|
||||||
db_list="$db_list $database"
|
db_list="$db_list $database"
|
||||||
fi
|
fi
|
||||||
|
@ -379,6 +383,8 @@ local_backup(){
|
||||||
disk_usage=$(df $BACKUP |tail -n1 |tr ' ' '\n' |grep % |cut -f 1 -d %)
|
disk_usage=$(df $BACKUP |tail -n1 |tr ' ' '\n' |grep % |cut -f 1 -d %)
|
||||||
|
|
||||||
if [ "$disk_usage" -ge "$BACKUP_DISK_LIMIT" ]; then
|
if [ "$disk_usage" -ge "$BACKUP_DISK_LIMIT" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Not enough disk space to run backup" | mail -s "$subj" $email
|
||||||
echo "Error: Not enough disk space"
|
echo "Error: Not enough disk space"
|
||||||
log_event "$E_DISK" "$EVENT"
|
log_event "$E_DISK" "$EVENT"
|
||||||
exit $E_DISK
|
exit $E_DISK
|
||||||
|
@ -417,6 +423,8 @@ ftp_backup(){
|
||||||
source $VESTA/conf/ftp.backup.conf
|
source $VESTA/conf/ftp.backup.conf
|
||||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] ||\
|
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] ||\
|
||||||
[ -z "$BPATH" ]; then
|
[ -z "$BPATH" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't parse ftp backup configuration" | mail -s "$subj" $email
|
||||||
echo "Error: Parsing error"
|
echo "Error: Parsing error"
|
||||||
log_event "$E_PARSING" "$EVENT"
|
log_event "$E_PARSING" "$EVENT"
|
||||||
exit $E_PARSING
|
exit $E_PARSING
|
||||||
|
@ -432,6 +440,8 @@ ftp_backup(){
|
||||||
ls $ftmpdir
|
ls $ftmpdir
|
||||||
rm $ftmpdir"
|
rm $ftmpdir"
|
||||||
if [ ! -z "$(ftpc "$command")" ] ; then
|
if [ ! -z "$(ftpc "$command")" ] ; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't login to ftp://$USERNAME@$HOST" | mail -s "$subj" $email
|
||||||
echo "Error: FTP error"
|
echo "Error: FTP error"
|
||||||
log_event "$E_FTP" "$EVENT"
|
log_event "$E_FTP" "$EVENT"
|
||||||
exit $E_FTP
|
exit $E_FTP
|
||||||
|
@ -453,12 +463,12 @@ ftp_backup(){
|
||||||
# Uploading backup archive
|
# Uploading backup archive
|
||||||
if [ "$localbackup" = 'yes' ]; then
|
if [ "$localbackup" = 'yes' ]; then
|
||||||
cd $BACKUP
|
cd $BACKUP
|
||||||
ftpc "put $user.$DATE.tar"
|
ftpc "put $user.$DATE.tar"
|
||||||
else
|
else
|
||||||
cd $tmpdir
|
cd $tmpdir
|
||||||
tar -cf $BACKUP/$user.$DATE.tar .
|
tar -cf $BACKUP/$user.$DATE.tar .
|
||||||
cd $BACKUP/
|
cd $BACKUP/
|
||||||
ftpc "put $user.$DATE.tar"
|
ftpc "put $user.$DATE.tar"
|
||||||
rm -f $user.$DATE.tar
|
rm -f $user.$DATE.tar
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
|
|
23
func/db.sh
23
func/db.sh
|
@ -330,6 +330,8 @@ dump_mysql_database() {
|
||||||
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
||||||
eval $host_str
|
eval $host_str
|
||||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't parse mysql config" | mail -s "$subj" $email
|
||||||
echo "Error: mysql config parsing failed"
|
echo "Error: mysql config parsing failed"
|
||||||
log_event "$E_PARSING" "$EVENT"
|
log_event "$E_PARSING" "$EVENT"
|
||||||
exit $E_PARSING
|
exit $E_PARSING
|
||||||
|
@ -338,12 +340,21 @@ dump_mysql_database() {
|
||||||
query='SELECT VERSION()'
|
query='SELECT VERSION()'
|
||||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||||
if [ '0' -ne "$?" ]; then
|
if [ '0' -ne "$?" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't connect to mysql server $HOST" | mail -s "$subj" $email
|
||||||
echo "Error: Connection failed"
|
echo "Error: Connection failed"
|
||||||
log_event "$E_DB $EVENT"
|
log_event "$E_DB $EVENT"
|
||||||
exit $E_DB
|
exit $E_DB
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mysqldump -h $HOST -u $USER -p$PASSWORD -P$PORT -r $dump $database
|
mysqldump -h $HOST -u $USER -p$PASSWORD -P$PORT -r $dump $database
|
||||||
|
if [ '0' -ne "$?" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't dump mysql database $database" | mail -s "$subj" $email
|
||||||
|
echo "Error: dump $database failed"
|
||||||
|
log_event "$E_DB $EVENT"
|
||||||
|
exit $E_DB
|
||||||
|
fi
|
||||||
|
|
||||||
query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
|
query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
|
||||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |\
|
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |\
|
||||||
|
@ -360,6 +371,8 @@ dump_pgsql_database() {
|
||||||
eval $host_str
|
eval $host_str
|
||||||
export PGPASSWORD="$PASSWORD"
|
export PGPASSWORD="$PASSWORD"
|
||||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
|
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't parse pgsql config" | mail -s "$subj" $email
|
||||||
echo "Error: postgresql config parsing failed"
|
echo "Error: postgresql config parsing failed"
|
||||||
log_event "$E_PARSING" "$EVENT"
|
log_event "$E_PARSING" "$EVENT"
|
||||||
exit $E_PARSING
|
exit $E_PARSING
|
||||||
|
@ -368,6 +381,8 @@ dump_pgsql_database() {
|
||||||
query='SELECT VERSION()'
|
query='SELECT VERSION()'
|
||||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||||
if [ '0' -ne "$?" ]; then
|
if [ '0' -ne "$?" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't connect to pgsql server $HOST" | mail -s "$subj" $email
|
||||||
echo "Error: Connection failed"
|
echo "Error: Connection failed"
|
||||||
log_event "$E_DB" "$EVENT"
|
log_event "$E_DB" "$EVENT"
|
||||||
exit $E_DB
|
exit $E_DB
|
||||||
|
@ -376,6 +391,14 @@ dump_pgsql_database() {
|
||||||
pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f $dump $database \
|
pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f $dump $database \
|
||||||
2> /dev/null
|
2> /dev/null
|
||||||
|
|
||||||
|
if [ '0' -ne "$?" ]; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't dump pgsql database $database" | mail -s "$subj" $email
|
||||||
|
echo "Error: dump $database failed"
|
||||||
|
log_event "$E_DB $EVENT"
|
||||||
|
exit $E_DB
|
||||||
|
fi
|
||||||
|
|
||||||
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
|
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
|
||||||
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|head -n1|cut -f 2 -d \ )
|
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|head -n1|cut -f 2 -d \ )
|
||||||
pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"
|
pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue