Asterisk. Freepbx. Удаление записей разговоров старше … дней

После установки 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/

Один комментарий

  1. Привет, данный скрипт не работает под php7, кто может его переписать ?

Оставьте ответ

Ваш адрес email не будет опубликован.

÷ 2 = 4