* Скрипт дополнен кодом для отправки сообщения в Телеграм.
И так, что же нам понадобится для создания такого инструмента?! Совсем немного: знание команд линукса, астериска и чуть-чуть логического мышления.
Если коротко, то скрипт будет работать так:
1. Смотрит статус транков 2. Проверяет сколько транков в системе 3. Ищет проблемные транки и если находит то пробует «починить» их (и отправляет на email оповещение), если все ок то спим спокойно дальше.
Код: Виділити все
#!/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 "Мониторинг транков FreePBX" [email protected] # Если условие ложно (т.е. с транками все хорошо)
# Telegram Messages
token='67xxxxxxx:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # Токен
chat="22xxxxxxx" # Ваш ID в Телеграм
subj="Мониторинг транков FreePBX" # Тема
message="$VAR" # Текст сообщения
/usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot67xxxxxxx:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage"
# Telegram Messages
else echo “ALL STATUS OK” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше
Должно получится примерно следующее, где
*/2 * * * * означает что скрипт будет выполняться каждые две минуты
/usr/local/bin/test.sh директория где находится сам скрипт (убедиться что скрипт имеет права на запуск)
> /dev/null 2>&1 используется для подавления нежелательного вывода в консоль. И так, мы рассмотрели элементарный скрипт который мониторит статусы транков, и делает sip reload если что-то не так и сообщает об этом на нужный email.
Основываясь на этом примере, можно создать более сложный скрипт, который будет делать несколько проверок, при чем статусы Request Sent или Auth. Sent в первой проверке он будет считать нормальными и лишь на второй или третей проверке будет делать sip reload для этих статусов. Все зависит от вашей фантазии, можно добавить в скрипт отсылку письма в суппорт вашему оператору, в котором будут необходимые данные из скрипта и заранее подготовленный текст для открытия заявки.
Скачать скрипт: Источник: https://voxlink.ru/kb/asterisk-configur ... te-monitor