#!/bin/bash

: '
Script de verificação de erro e reparação, verifica as tabelas que estão corrompidas e executa a reparação no banco que tem as tabelas corrompidas
Hora de execução: todo dia depois do horario comecial de cada empresa.
'

# Mapeando o arquivo de configuração
source /etc/pabx/patch-sql.conf;

# Verifica se esta ativo, se tiver executa
if [ $REMEDY_TABLE -eq 1 ]; then

        # Horário
        CURRENTTIME=$(date "+%H:%M");
        # Verifica se esta no horário para executar a SQL
        if [[ $SCHEDULE_REPAIR_TABLE == *$CURRENTTIME* ]]; then

                FILETMP=/tmp/mysqlcheck.log;
                FILEREPAIRLOG=/var/log/mysql-tables-error.log;
                FILEREPAIRDATELOG=/var/log/mysql-repair-date.log;

                # 1 - MYSQLCHECK todo error, ele atribuir ao checkTable.txt
                # 2 - Verificar se tem algum error de "REPAIR TABLE" e pega o primeiro error do arquivo mysqlcheck.log
                # 3 - Verificar se tem algum error de "Corrupt" e pega o primeiro error do arquivo mysqlcheck.log

                mysqlcheck -c -u root -A -s > /tmp/mysqlcheck.log;
                repairTables=$(cat $FILETMP | grep "REPAIR TABLE" | awk '{print $8}' | head -1);
                corruptTables=$(cat $FILETMP | grep "Corrupt" |  awk '{print $3}' | head -1);

                # Caso tenha alguma tabela corrompida
                if [ $repairTables ] || [ $corruptTables ]; then
                        if [ ! -e "$FILEREPAIRLOG" ] ; then
                                touch $FILEREPAIRLOG;
                                chmod 0744 $FILEREPAIRLOG;
                        fi

                        if [ ! -e "$FILEREPAIRDATELOG" ] ; then
                                touch $FILEREPAIRDATELOG;
                                chmod 0744 $FILEREPAIRDATELOG;
                        fi

                        # Atribuir a data atual e os erros ao arquivo ErrorTable.txt
                        date "+############################ IF  no dia: %d-%m-%Y as %H:%M:%S ##############################" >> $FILEREPAIRLOG;
                        cat $FILETMP >> $FILEREPAIRLOG;

                        # Reparação das tabelas
                        date "+############################ Reparação feita no dia: %d-%m-%Y as %H:%M:%S ##############################" >> $FILEREPAIRDATELOG;
                        mysqlcheck -A --auto-repair -u root;
                        /etc/init.d/mysqld restart;
                        limpa;
                fi
        fi
fi
exit 0;
