Нет описания правки |
Нет описания правки Метки: Визуальный редактор apiedit |
||
(не показаны 3 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | ==Задача: Ежеминутный мониторинг состояния транков.== |
+ | ==Задача: Ежеминутный мониторинг состояния службы и транков.== |
Для этого, создадим скрипт: |
Для этого, создадим скрипт: |
||
Строка 9: | Строка 9: | ||
log="/var/log/aster_check.log" #Путь к log файлу. |
log="/var/log/aster_check.log" #Путь к log файлу. |
||
asterisk="/usr/sbin/asterisk" #Путь к файлу обработчика Asterisk. |
asterisk="/usr/sbin/asterisk" #Путь к файлу обработчика Asterisk. |
||
⚫ | |||
+ | |||
+ | |||
+ | # Проверяем, запущена ли служба Asterisk, если не запущена, запускаем. |
||
⚫ | |||
+ | |||
⚫ | |||
+ | echo "Запуск службы Asterisk" >>$log |
||
+ | $service start |
||
+ | |||
+ | fi |
||
+ | |||
#Проверяем количество зарегистрированных транков. |
#Проверяем количество зарегистрированных транков. |
||
Строка 23: | Строка 35: | ||
После чего, необходимо сделать его исполняемым. |
После чего, необходимо сделать его исполняемым. |
||
⚫ | |||
− | |||
⚫ | |||
Добавим скрипт в crontab для ежеминутного запуска скрипта. |
Добавим скрипт в crontab для ежеминутного запуска скрипта. |
||
− | + | crontab -e |
|
В конце добавляем: |
В конце добавляем: |
||
* * * * * /etc/aster_check |
* * * * * /etc/aster_check |
||
Строка 35: | Строка 46: | ||
#!/bin/bash |
#!/bin/bash |
||
− | MinTrunk=21 #Минимальное количество зарегистрированных транков. |
||
⚫ | |||
⚫ | |||
⚫ | |||
− | # |
+ | MinTrunk=21 #Минимальное количество зарегистрированных транков |
+ | |||
⚫ | |||
⚫ | |||
+ | asterisk="/usr/sbin/asterisk" #Путь к файлу обработчика Asterisk |
||
⚫ | |||
+ | service="/etc/init.d/asterisk" #Путь к службе Asterisk |
||
⚫ | |||
for step in 1 2 3 4 5 6 |
for step in 1 2 3 4 5 6 |
||
do |
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 "Количество зарегистрированных транков: $CurKolTrunk" >> $log |
||
echo "`date` Перезапуск SIP транков." >> $log |
echo "`date` Перезапуск SIP транков." >> $log |
||
$asterisk -rx 'sip reload' |
$asterisk -rx 'sip reload' |
||
+ | |||
fi |
fi |
||
$sleep 10 |
$sleep 10 |
Текущая версия от 02:21, 13 апреля 2016
Задача: Ежеминутный мониторинг состояния службы и транков.[]
Для этого, создадим скрипт:
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