IceCast контроль потоков

Материал из rrv-wiki
Перейти к навигации Перейти к поиску


Скрипт контроля потока интернет вещания и оповещение о его неработоспособности

#!/bin/sh


#Если FLAG равен 0 то выводим сообщение о прекращении вещания                                                                                                                                                                              
#Если FLAG равен 1 то мы уже сообщили о прекращении вещания и повторим оповещение только в случае если вещание будет восстановлено                                                                                                       
FLAG=0       
#бесконечный цикл
while :
do

#Цикл пяти подключений (0..4) если пять раз не подключится, значит появилась проблема 
i=0
while [ "$i" -le "4" ]
do
i=$(($i+1))
time=$(date +%s)

#Подключение к Icecast2 потоку
/usr/bin/streamripper http://online.i-rrv.ru:8000/testrdaio.m3u --quiet -A -a /dev/null -c

t1=$(($(date +%s)-$time))
#Если подключение к интернет вещание $t1 больше секунд вещания которые считается нормой (t2 по умолчанию 1 час = 3600 сек)
#То сбрасываем счетчик и начинаем считать кол-во подключений с нуля.
t2=3600
if [ "$t1" -gt "$t2" ]
then
i=0
FLAG=0 
fi
#sleep 1 (Секундная пауза)
ping -c 1 127.0.0.1 -q > /dev/null
done

#Если скрипт дошел до этого места, значит интернет вещание прекратилось

#Проверка флага (отпраляли ли мы сообщение о данной проблеме)
if [ "${FLAG}" -eq "0" ]                                                                                                                                                                                                                     
then   
D=`date +%Y-%m-%d_%H-%M`
# Будет отображаться "От кого"
FROM="rrv@i-rrv.ru"
# Кому (например на сотовый, хотя можно и на любую почту или в телеграмм, это уже на ваше усмотрение)
MAILTO="79130000000@sms.mtslife.ru"
# Тема письма
#NAME=$1
NAME="Интернет вещание прекратилось"
# Тело письма
BODY="Упало интернет вещание "$D
# В моем примере я отправляю письма через существующий почтовый ящик на выдуманном сервере i-rrv.ru 
# Скрипт легко адаптируется для любых почтовых серверов
SMTPSERVER="smtp.i-rrv.ru:25"
# Логин и пароль от учетной записи ngs.ru
SMTPLOGIN="testmail@i-rrv.ru"
SMTPPASS="megapassиличтотамувас"

# Отправляем письмо
#/usr/bin/sendEmail -f $FROM -t $MAILTO -o message-charset=utf-8  -u $NAME -m $BODY -s $SMTPSERVER -o tls=yes -xu $SMTPLOGIN -xp $SMTPPASS
/usr/bin/sendEmail -q -f $FROM -t $MAILTO -o message-charset=utf-8  -u $NAME -m $BODY -s $SMTPSERVER -o tls=no -xu $SMTPLOGIN -xp $SMTPPASS

FLAG=1
fi
#sleep 60 #1 мин                                                                                                                                                                                                                             
ping -c 60 127.0.0.1 -q > /dev/null 

done

Затем создаем скрипт запуска для контроля нескольких потоков:

#!/bin/sh                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                             
nohup /home/rrv/myscript/icecast_control/icecast1_control.sh &                                                                                                                                                                    
nohup /home/rrv/myscript/icecast_control/icecast2_control.sh &                                                                                                                                                                    
nohup /home/rrv/myscript/icecast_control/icecast3_control.sh & 

И вставляем его в crone для запуска посте старта системы через 30 секунд (crontab -eu rrv)

@reboot sleep 30 && /home/rrv/myscript/start_icecast_control.sh >/dev/null 2>&1

P.S. не забываем давать права на запуск скриптам