Читать «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"