IceCast контроль потоков
Перейти к навигации
Перейти к поиску
Скрипт контроля потока интернет вещания и оповещение о его неработоспособности
#!/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. не забываем давать права на запуск скриптам