
#!/bin/bash
# Задаём переменные (Specify variables)
MYSQL_USER="root"                              # Имя пользователя MySQL (MySQL username)
MYSQL_PASSWORD="Admin2009"                      # Пароль пользователя MySQL (MySQL password)
MYSQL="/usr/bin/mysql"                            # Расположение MySQL (whereis mysql)
MYSQLCHECK="/usr/bin/mysqlcheck"                  # Расположение MySQLcheck (whereis mysqlcheck)
EMAIL="admin2@shalyapinspb.ru"                          # Почтовый адрес для уведомлений (Email address for notification)
TYPE="day"                                      # Интервал времени (SECOND,MINUTE,HOUR,DAY,MONTH,YEAR)
NUMBER="30"                                        # Количество (5 месяца) (the number 5 months)
LOG="/var/log/cdr-temp.log"                       # Лог файл перезаписываемый и отсылаемый на почту(A temporary log file is sent on email as a report)
LOG1="/var/log/cdr-clean.log"                     # Лог файл постоянный (The log file permanent)
data="`date`"
 
# Чистим лог от старых записей (Clean old log records from)
echo > $LOG
 
# Делаем запись даты в лог (The date recorded in the log)
echo >> $LOG1
echo "---------=$data=---------" >> $LOG1
echo >> $LOG1
 
# Чистим asteriskcdrdb.cdr (clean asterisksdrdb.cdr)
if $MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "delete from asteriskcdrdb.cdr where calldate < DATE_SUB(NOW(), interval $NUMBER $TYPE);"; then
echo >> $LOG1
echo Старые записи из asteriskcdrdb.cdr успешно удалены >> $LOG1
echo >> $LOG1
else
echo Не удалось удалить старые записи из asteriskcdrdb.cdr >> $LOG1
echo >> $LOG1
exit 
fi
 
# Чистим asteriskcdrdb.cel (clean asteriskcdrdb.cel)
if $MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "delete from asteriskcdrdb.cel where eventtime < DATE_SUB(NOW(), interval $NUMBER $TYPE);"; then
echo Старые записи из asteriskcdrdb.cel успешно удалены >> $LOG1
echo >> $LOG1
else
echo Не удалось удалить старые записи из asteriskcdrdb.cel >> $LOG1
echo >> $LOG1
exit 
fi
 
# Оптимизируем asteriskcdrdb (optimize asteriskcdrdb table)
if $MYSQLCHECK -u$MYSQL_USER -p$MYSQL_PASSWORD --optimize asteriskcdrdb; then
echo База asteriskcdrdb успешно оптимизирована >> $LOG1
echo >> $LOG1
else
echo Не удалось оптимизировать базу asteriskcdrdb >> $LOG1
echo >> $LOG1
exit 
fi
 
echo >> $LOG1
echo "----------Были удалены следующие файлы и папки----------" >> $LOG1
 
# Чистим папки от файлов записи (Records you want to delete, and empty folders)
find /var/spool/asterisk/monitor/ -name "*.wav*" -type f -mtime +30 -print -delete >> $LOG1
find /var/spool/asterisk/monitor/ -type d -empty -print -delete >> $LOG1
 
# Выводим последние 10 000 записей из постоянного лога и копируем их во временный (Get the last 10,000 records from the permanent log file and copy it to temporary )
grep -A 10000 "$data" $LOG1 > $LOG
 
# Отсылаем письмо с логами очистки в теле письма (Send email with progress report)
echo "Отчёт об очистке старых записей" | mail -s PBX-CDR-CLEANER $EMAIL < $LOG