Оглавление
После установки Freepbx диск начинает заполняться записями разговоров. Научим систему удалять их.
Скрипт не мой, взят здесь:
https://wiki.merionet.ru/ip-telephoniya/32/avtomaticheskoe-udalenie-staryx-zapisej-asterisk/
Переписано для удобства
Файл скрипта удаления старых записей
Создаем файл скрипта, он написан на PHP:
mkdir /scripts
nano /scripts/cleanup_cdr.php
Вставляем код, правим переменные $days, $username, $password, $file (см. комментарии):
<?php
$days = 180; //записи, которые старше 180 дней будут удалены. Укажите здесь количество дней для удаления;
$hostname = "localhost"; //если скрипт выполняется на том же сервере, что и IP - АТС Asterisk, то оставьте здесь localhost. В противном случае укажите IP - адрес;
$username = "delete"; //логин для подключения к базе данных asteriskcdrdb
$password = "333jIje45"; //пароль для подключения к базе данных asteriskcdrdb
$dbName = "asteriskcdrdb";
$file = '/home/asterisk/log_mail.txt'; //расположение файла логов
$cdate = date('Y-m-d H:i:s', strtotime('-'.$days.' days')); //определяем максимальную дату звонка. Все звонки старше этой даты, будут удалены;
$adate = date('Y-m-d H:i:s'); //текущая дата для записи в лог – файл;
/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
/* удаляем информацию о записях в таблице cdr*/
$query = "DELETE from cdr WHERE calldate < '$cdate';";
$res=mysql_query($query) or die(mysql_error());
/* Как много нашлось строк */
$number = mysql_affected_rows();
/* удаляем сами аудио - записи разговоров */
echo exec('find /var/spool/asterisk/monitor/ -type f -mtime +'.$days.' -exec rm -rf {} \;');
$current = "DELETE :: $adate :: $number records were deleted from CDR\n";
file_put_contents($file, $current, FILE_APPEND | LOCK_EX); //записываем запись в лог файл;
?>
Настройка MySql на сервере FreePBX
Далее, создаем пользователя базы данных (см. выше, в файле мы уже задали имя пользователя delete и его пароль) с доступом к записям разговоров, от имени которого и будем удалять записи:
mysql
mysql> CREATE USER 'delete'@'localhost' IDENTIFIED BY '333jIje45';
Даем нужные права:
mysql> GRANT DELETE, SELECT ON asteriskcdrdb.cdr TO 'delete';
mysql> quit
Готово.
Добавление задания в планировщик
Чтобы однократно выполнить скрипт, запускаем:
/usr/bin/php /scripts/cleanup_cdr.php
Чтобы скрипт запускался регулярно и автоматически, добавим его в планировщик:
nano crontab -e
0 0 * * 7 root /usr/bin/php /scripts/cleanup_cdr.php
Ссылки
https://wiki.merionet.ru/ip-telephoniya/32/avtomaticheskoe-udalenie-staryx-zapisej-asterisk/
Привет, данный скрипт не работает под php7, кто может его переписать ?