Фэндом


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

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

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

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики