Напишите следующий текст скрипта и сохраните:
#!/bin/bash
flog=/var/log/asterisk/cleanup-asterisk-log.txt
dtFormat="+%Y-%m-%d %H:%M:%S"
log() {
echo $(date "${dtFormat}")" $1" >>$flog
}
removeOld() {
folder=$1
days=$2
patt=$3
lst=/tmp/cleanup-list.txt
find – P "${folder}" – maxdepth 4 – mtime +${days} – iname "${patt}" – delete – print >${lst}
cnt=$(grep – c "" ${lst})
log "OK: ${cnt} files like '${patt}' removed from '${folder}'"
}
log «Cleanup Asterisk files started»
removeOld '/var/spool/asterisk/monitor' "120" '*.wav'
removeOld '/var/www/backup' "60" 'elastixbackup-*-ab.tar'
removeOld '/var/www/faxes' "120" '*.pdf'
removeOld '/var/www/faxes' "120" '*.tif'
removeOld '/var/www/hylafax' "120" '*.pdf'
removeOld '/var/www/hylafax' "120" '*.tif'
log "Cleanup complete"
exit 0
Настройте автоматический запуск, используя команду
crontab – e
убедитесь, что есть определение переменной окружения PATH
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
чтобы запускать скрипт каждую ночь в 01:05 добавьте строку:
5 1 * * * /bin/bash /root/tasks/cleanup-asterisk.sh
Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».
Данный скрипт удаляет:
• аудиозаписи старее 120 дней
• резервные копии конфигурации Elastix старее 60 дней (кроме созданных вручную)
• факсы старее 120 дней
При необходимости по аналогии можно добавить другие папки для удаления старых файлов.
Отключение резервного копирования аудиозаписей
Если Вы включили резервное копирование конфигурации Elastix на закладке «System/Backup/Restore»
по умолчанию создаются резервные копии даже голосовой почты и аудиозаписей разговоров:
Это очень быстро засоряет диск и при переполнении может привести к остановке работы Elastix. Поэтому рекомендую отключить архивирование аудиозаписей, откорректировав скрипт:
nano /var/www/backup/automatic_backup.php
перечислив компоненты для регулярного резервного копирования и дополнив строку запуска процедуры создания резервной копии строкой «' '.$components»:
$components=' – components=as_db,as_config_files,as_voicemail,as_sounds,'
.'as_mohmp3,as_dahdi,fx_db,fx_pdf,em_db,em_mailbox,ep_db,'
.'ep_config_files,sugar_db,vtiger_db,a2billing_db,mysql_db,'
.'menus_permissions,fop_config,calendar_db,address_db,conference_db,eop_db';
system('/usr/share/elastix/privileged/backupengine – backup – backupfile '.
$sBackupFilename.' – tmpdir '.$sBackupDir.' '.$components, $retval);
Альтернативный способ – отключить вообще возможность резервного копирования аудиозаписей, в том числе по требованию. Для этого создайте и выполните следующий скрипт:
#!/bin/bash
fl=/var/www/html/modules/backup_restore/index.php
cp $fl ${fl}-orig
txt_old='["]as_monitor["]'
txt_new='\/\/ \"as_monitor\"'
sed "s/$txt_old/$txt_new/g" – i $fl
Отключение зависших соединений
Некоторые разговоры не могут быть разорваны автоматически. Чаще всего это происходит при ошибках передачи данных, когда телефонам абонентов и Elastix не удается корректно отреагировать на не доставленные пакеты. Если у абонентов включен режим Ожидания вызова (Call Waiting), то этого никто не заметит, так как новые звонки продолжат поступать. Если же зависнет соединение с абонентом, у которого отключен режим Ожидания вызова (Call Waiting), то связаться с таким абонентом не получится. Также зависшие соединения создают проблемы абонентам, у которых настроена условная переадресация (по состоянию Занято), и операторам Очередей (Queues), из-за чего к ним не будут поступать новые звонки. Зависшие соединения приходится разрывать вручную или автоматически. Далее описаны оба варианта отключения таких соединений.
Ручной разрыв соединений
К сожалению, связь может зависнуть на любой минуте. Есть возможность разорвать зависшее соединение вручную. Для этого следует выполнить в меню PBX \ Tools команду:
core show channels concise
и выяснить уникальный идентификатор соединения, который указан после последнего восклицательного «!» знака:
После чего дать команду вида:
channel request hangup 1422080480.13497
для принудительного разъединения:
Также можно установить бесплатный модуль bSmart Calls Disconnector, отображающий текущие разговоры в табличном виде и позволяющий разъединять соединения:
Автоматический разрыв соединений
Для автоматического разъединения соединений можно настроить опции Elastix, ограничивающие время разговора до 30 минут по внутренним и до 15 минут по внешним линиям при помощи указания опций набора: