Автоматический перезапуск сервера Domoticz в случае падения (Update)

Задача : если сервис Domoticz не отвечает по ряду причин в течении 5 минут, автоматически перезапустить сервис и сообщить в Telegram в чат о проблеме.

Создаем небольшой скрипт в /etc/scripts/check_domoticz_online.sh

root@rp1> chmod 755  /etc/scripts/check_domoticz_online.sh
root@rp1> apt-get install curl
#!/bin/sh
# check domoticz
status=`curl -s -i -H "Accept: application/json" "http://192.168.1.30:8080/json.htm?type=devices&rid=1" | grep "status"| awk -F: '{print $2}'|sed 's/,//'| sed 's/\"//g'`
if [ $status ]
then
echo "Domoticz has already been started"
else
sudo service domoticz.sh stop
sleep 5
sudo service domoticz.sh start | curl -s "https://api.telegram.org/bot344155761:AAHmrb9kazf0C1Xqz3452dGАвК5QjpQTw5baoKY-U/sendMessage?chat_id=125444999&text=Domoticz was offline, attempting a restart."
fi

где:

  • 192.168.1.30:80 – IP адрес нашего Domoticz сервера и его порт
  • bot344155761:AAHmrb9kazf0C1Xqz3452dGАвК5QjpQTw5baoKY-U/sendMessage?chat_id=125444999 -API key для Telegram

и добавляем в Cron задачу

root@rp1> crontab -e -u root

*/5 * * * * /etc/scripts/check_domoticz_online.sh > /dev/null 2>&1

вот еще пример скрипта, который собирает лог с данными падения (дата-время) сервиса domoticz с последующим его рестартом

#!/bin/bash
  CONFIG=/var/log/domoticz_state_checker.log
  dt=$(date '+%d/%m/%Y %H:%M:%S')
  DomoticzState=`sudo service domoticz.sh status`
   if [[ $DomoticzState == *"active (running)"* ]]
          then
                  echo "Domoticz is running. Nothing to do."
  elif [[ $DomoticzState == *"inactive (dead)"* ]]
          then
          echo "$dt, Domoticz is not running. Restarting Domoticz..." >> "$CONFIG"
                  sudo service domoticz.sh restart
                  echo "$dt, Domoticz restarted..." >> "$CONFIG"
  fi

и еще пример

#!/bin/bash
# add crontab */5 * * * * sudo /home/pi/scripts/domoticz_state_checker.sh
# sudo chmod +x domoticz_state_checker
while true
do

DomoticzState=`sudo service domoticz status`

if [[ $DomoticzState == *"active (running)"* ]]
        then
                echo 'Domoticz is running. Nothing to do.'
elif [[ $DomoticzState == *"inactive (dead)"* ]]
        then
                echo 'Domoticz is not running. Restarting Domoticz...'
                sudo service domoticz restart
                echo 'Domoticz restarted.'
         fi

done
### Done

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x