Читать «ELASTIX – общайтесь свободно» онлайн - страница 97
Владислав Юров
mkdir /root/tasks
nano /root/tasks/drophunged.sh
следующего содержания (в скрипте «3600» соответствует 60 минутам):
#!/bin/bash
chnls=$(/usr/sbin/asterisk – rx 'core show channels concise' | tr " " "_")
n=0
d=0
for ch in $chnls
do
chname=$(echo $ch | awk '{split($0,a,"!"); print a[1]}')
chdur=$(echo $ch | awk '{split($0,a,"!"); print a[12]}')
chcode=$(echo $ch | awk '{split($0,a,"!"); print a[14]}')
if ["$chdur" – gt "3600"]; then
d=$(($d+1))
/usr/sbin/asterisk – rx "channel request hangup $chcode"
fi
n=$(($n+1))
done
затем назначить исполнение созданного скрипта:
crontab – e
добавлением к списку задач время его выполнения, например, каждый час в 17 минут:
17 0-23 * * * /bin/bash /root/tasks/drophunged.sh
Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».
Автоматическое восстановление подключений к внешним линиям
Система Elastix позволяет изменять настройки коммуникаций на лету, даже без разрыва текущих соединений. Это очень удобно, но иногда приводит к блокировке входящей связи, если после применения обновленных настроек Asterisk не удается установить заново соединения с Внешними линиями (Trunks). Чтобы быть уверенным, что станция компании осталась на связи с внешним миром, желательно после применения изменений переходить в меню PBX \ Tools и проверять состояние Внешних линий (Trunks) командой:
sip show registry
Корректное состояние внешних линий – «Registered»:
Если же Asterisk не удалось восстановить внешние подключения, состояние всех или части линий будет «Unregistered»:
Для повторения попытки установить соединения следует выполнить команду, которая не прерывая текущих разговоров, применит изменения повторно:
sip reload
В случае, если это не помогло, придется перезапустить ядро Asterisk, что на пару минут прервет связь (как текущие соединения, так и все новые попытки входящих и исходящих звонков):
core restart now
По этой причине, желательно применять внесенные в настройки изменения во внерабочие часы компании, чтобы не оставлять клиентов и сотрудников без связи.
Автоматическое восстановление внешних подключений
В динамичной компании порой приходится вносить изменения в Elastix в течение дня, даже по нескольку раз. Временами, ответственные за изменения сотрудники, забывают проверить восстановление внешних подключений. Но можно эту работу автоматизировать, поручив серверу Elastix проверять состояние соединений самостоятельно. Для этого достаточно подключиться к Elastix под пользователем «root», создать небольшой скрипт:
mkdir /root/tasks
nano /root/tasks/check-unreg.sh
следующего содержания:
#!/bin/bash
CountReg=$(asterisk – rx "sip show registry" | grep – c 'Registered')
CountUnreg=$(asterisk – rx "sip show registry" | grep – c 'Unregistered')
if [$CountReg – le 1]; then
asterisk – rx "module reload chan_sip"