LINUX.ORG.RU

проверка выполнение скрипта на ошибки

 , ,


0

1

День добрый, есть скрипт который бекапит базы mysql. столкнулся с такой проблемой, поломалась как-то база и скрипт бекап делал zero размер с ошибкой но, делал. Возник вопрос как проверять что бекап выполнился без ошибки? Вот сам скрипт:

mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par1 | gzip -c > /var/backups/backup/mysql/par1-date "+%Y-%m-%d".sql.gz

mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par2 | gzip -c > /var/backups/backup/mysql/par2-date "+%Y-%m-%d".sql.gz

mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par3 | gzip -c > /var/backups/backup/mysql/par3-date "+%Y-%m-%d".sql.gz

mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par4 | gzip -c > /var/backups/backup/mysql/par4-date "+%Y-%m-%d".sql.gz

#Удаляем файлы бекапов старше 7 дней tmpwatch -m 7d /var/backups/backup/mysql/

Решено:

#/bin/bash

allerror=""
mysql_pass="password"

set -o pipefail

mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par1 | gzip -c > /var/backups/backup/mysql/par1-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
  allerror="Backup базы par1 не выполнен\n"
fi

mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par2 | gzip -c > /var/backups/backup/mysql/par2-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
  allerror="${allerror}Backup базы par2 не выполнен\n"
fi

mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par3 | gzip -c > /var/backups/backup/mysql/par3-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
  allerror="${allerror}Backup базы par3 не выполнен\n"
fi

mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par4 | gzip -c > /var/backups/backup/mysql/par4-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
  allerror="${allerror}Backup базы par4 не выполнен\n"
fi

if  [[ -n "$allerror" ]]; then

  TMP=$(mktemp)
  FROM_EMAIL_ADDRESS="откого@example.net"
  TO_EMAIL_ADDRESS="кому@example.net"
  EMAIL_SUBJECT="Тема письма"
  SMTP="smtp.example.net:25"
  FRIENDLY_NAME="User Name"
  EMAIL_ACCOUNT_PASSWORD="smtp_password"

cat > $TMP << EOF
EOF

cat $TMP | \
        echo -e $allerror  | iconv -t UTF-8 | mailx -v \
        -s "$EMAIL_SUBJECT" \
        -S smtp-auth=login \
        -S smtp=${SMTP} \
        -S from="${FROM_EMAIL_ADDRESS}(${FRIENDLY_NAME})" \
        -S smtp-auth-user=$FRIENDLY_NAME \
        -S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
        $TO_EMAIL_ADDRESS

[ -e $TMP ] && rm $TMP 
fi

set -e

а, тебе проверить, ну гугли sh get return code

deep-purple ★★★★★ ()
Последнее исправление: deep-purple (всего исправлений: 1)

Я чекаю наличие заголовка. Такое, но лучше, чем ничего.

А вообще, ещё есть код возврата и возможность импорта SQL в тестовую базу.

Алсо, не так давно была тема про проверку синтаксический корректности запроса без выполнения, поищи.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.