Без лирики, приступим сразу к настройке. Подключитесь к консоли сервера – создаем файл:
[root@asterisk ~]# touch chektrank.sh
Далее открываем этот файл для редактирования через nano редактор:
[root@asterisk ~]# nano chektrank.sh
Вписываем скрипт в этот файл:
#!/bin/bash # Задаем переменные ALLTRUNKSMINIMUM=\"`/usr/sbin/asterisk -rx \"sip show registry\"`\" # Смотрим статусы транков ALLTRUNKS=`echo \"$ALLTRUNKSMINIMUM\" |grep \"SIP registrations\" |awk \'{print $1}\'` # Смотрим сколько всего транков в системе REGTRUNKS=`/usr/sbin/asterisk -rx \"sip show registry\" |grep Registered |wc -l` # Зарегистрированные транки (все транки со статусом Registered) # Задаем условие if [ \"$REGTRUNKS\" -lt \"$ALLTRUNKS\" ]; then # Если есть хоть один проблемный транк (В одном или более транке встретился статус отличный от Registered) то sleep 5 # Ждем 5 секунд echo `/usr/sbin/asterisk -rx \"sip reload\"` # Делаем sip reload sleep 5 # Ждем 5 секунд VAR=`/usr/sbin/asterisk -rx \"sip show registry\"` # Смотрим статусы транков после проверки # Уведомляем на почту о том какие статусы стали после проверки echo \"$VAR\" | mail -s \"Мониторинг транков\" your@mail.ru # Если условие ложно (т.е. с транками все хорошо) else echo “ALL STATUS OK” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше fi
Теперь зашедулим скрипт через планировщик заданий cron:
[root@asterisk ~]# crontab -e
Жмем «О» что бы написать или вставить текст. Пишем в открывшемся окне:
0 /120 * * * /bin/bash /root/chektrank.sh
Жмем esc и пишем :wq
. Не забываем включить verbose в логах :)
Мне понадобился простой мониторинг состояния транков в asterisk. Иногда после проблем с интернетом на некоторых серверах автоматически не восстанавливаются транки к sip провайдерам. Приходится дергать их вручную через sip reload после того, как пользователи начинают жаловаться. А так как провайдеров может быть несколько, не всегда сразу становится понятно, что какой-то из каналов отвалился.