ФЭНДОМ


Задача: Ежеминутный мониторинг состояния службы и транков.Править

Для этого, создадим скрипт:

nano /etc/aster_check

Содержание:

#!/bin/bash

MinTrunk=21 #Минимальное количество зарегистрированных транков.
log="/var/log/aster_check.log"  #Путь к log файлу.
asterisk="/usr/sbin/asterisk" #Путь к файлу обработчика Asterisk.
service="/etc/init.d/asterisk" #Путь к службе Asterisk


# Проверяем, запущена ли служба Asterisk, если не запущена, запускаем.
ServWork=`$asterisk -rx 'sip show registry' | grep -i "Unable to connect" | wc -l`

        if [ $ServWork -eq "1" ]; then 
                echo "Запуск службы Asterisk" >>$log
                $service start

        fi


#Проверяем количество зарегистрированных транков.
CurKolTrunk=`$asterisk -rx 'sip show registry' | grep -i "register" | wc -l`

#Сверяем количество зарегистрированных транков, если значение меньше минимального, перезапускаем SIP транки.
        if [ $CurKolTrunk -lt $MinTrunk ]; then
                        echo "Количество зарегистрированных транков: $CurKolTrunk" >> $log
                        echo "`date` Перезапуск SIP транков."  >> $log
                        $asterisk -rx 'sip reload'
        fi
exit

Закрываем и сохраняем все Ctrl + X.

После чего, необходимо сделать его исполняемым.

chmod +x /etc/aster_check

Добавим скрипт в crontab для ежеминутного запуска скрипта.

crontab -e

В конце добавляем:

* * * * * /etc/aster_check

По умолчанию, настройки кронтаба запускают скрипт каждую минуту.

Если необходимо запускать скрипт чаще чем 1 минуту.Править

По скольку Crontab не умеет запусть файлы чаще чем 1 минуту, то видоизменим скрипт и добавим цикл for. Цикл For не очень удобен для больших шагов, но для нашей задачи и с целью минимизирования скрипта подходит лучше всего.

#!/bin/bash


MinTrunk=21 #Минимальное количество зарегистрированных транков

log="/var/log/aster_check.log"  #Путь к log файлу
asterisk="/usr/sbin/asterisk" #Путь к файлу обработчика Asterisk
sleep="/bin/sleep" #Путь к файлу обработчика команды sleep
service="/etc/init.d/asterisk" #Путь к службе Asterisk

for step in 1 2 3 4 5 6
        do

# Проверяем, запущена ли служба Asterisk, если не запущена, запускаем.
ServWork=`$asterisk -rx 'sip show registry' | grep -i "Unable to connect" | wc -l`

        if [ $ServWork -eq "1" ]; then 
                echo "Запуск службы Asterisk" >>$log
                $service start

        fi

#Проверяем количество зарегистрированных транков, если значение меньше определенного, переподключаем транки.
CurKolTrunk=`$asterisk -rx 'sip show registry' | grep -i "register" | wc -l`


         if [ $CurKolTrunk -lt $MinTrunk ]; then

                        echo "Количество зарегистрированных транков: $CurKolTrunk" >> $log
                        echo "`date` Перезапуск SIP транков."  >> $log
                        $asterisk -rx 'sip reload'

                fi
        $sleep 10
        done
exit