Скрипт мониторинга регистраций транков в Asterisk

Материал из TelefUM 24
Перейти к: навигация, поиск

Создаем файл trunkmon.sh

[admin@centos]# touch /home/trunkmon.sh
[admin@centos]# nano /home/trunkmon.sh


и вставляем в него этот код:

  1. #!/bin/bash
  2. #Задаем переменные
  3. LOG=/var/log/asterisk/trunkmon.log
  4.  
  5. echo -e "\n===========================================START `date +"%F %T"`===========================================\n" >> $LOG
  6.  
  7. for i in 1 2 3
  8. do
  9. ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" # Смотрим статусы транков
  10. ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` # Смотрим сколько всего транков в системе
  11. REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l`  # Зарегистрированные транки (статус Registered)
  12.  
  13. #Сравниваем ВсеТранки с Зарегистрированными
  14. if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then # Если есть хоть один проблемный транк (Cтатус отличный от Registered) то
  15.  
  16. case "$i" in
  17. "1") # при первом проходе цикла for
  18. sleep 5 # Ждем 5 секунд
  19. ;;
  20. "2") # при втором проходе цикла for
  21. echo `/usr/sbin/asterisk -rx "sip reload"` # Делаем sip reload
  22. sleep 5 # Ждем 5 секунд
  23. ;;
  24. "3") # при третьем проходе цикла for
  25. STATUS="`/usr/sbin/asterisk -rx "sip show registry"`" # Смотрим статусы транков после проверки</code>
  26. <code>#Уведомляем на почту о том какие статусы стали после проверки
  27. echo -e "`date +"%F %T"`SIP registrations $REGTRUNKS/$ALLTRUNKS\n$STATUS" | mail -s "Мониторинг транков `hostname`" dest@mailbox.ru
  28. echo -e "===LAST STATUS===\n$STATUS" >> $LOG # и записываем в лог последнее состояние транков
  29. ;;
  30. esac
  31. else    # Если условие ложно (т.е. с транками все хорошо)
  32. echo “ALL STATUS OK” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше
  33. break
  34. fi
  35. done

Даем права на запуск скрипта

[admin@centos]# chmod +x /srv/trunkmon.sh


И добавляем в cron запуск этого скрипта 1 раз на 10 минут

[admin@centos]# crontab -e
*/10 * * * * /srv/trunkmon.sh


Проверить правила в cron можно командой

[admin@centos]# crontab -l