Page 1 sur 3

[Bash] Script de contrôle de présence/redémarrage Domoticz

Publié : 09 févr. 2019, 11:50
par vinchz31
Bonjour à tous,

J'ai réalisé dernièrement une évolution vers la béta qui a crashé au bout de quelques heures mon DOmoticz.
Résultat, plus de chauffage le lendemain matin. J'ai résolu entre temps le problème du crash, mais j'ai réalisé un script qui contrôle la présence du processus Domoticz et le relance le cas échéant ce qui permet d'éviter de se retrouver sans domotique en cas de problème.

Le script est en bash sur Raspberry.
Voici le bash "TestPresenceDomoticz.bash"

Code : Tout sélectionner

#! /bin/sh
RetourPresenceProcess=`ps -aux | grep domoticz | grep 8080` 
DateActuelle=`date`

if [ ! -n "$RetourPresenceProcess" ]
then 
  MessageLog="Crash de Domoticz (processus absent)... Redémarrage automatique effectué le "
  logaecrire="$MessageLog""$DateActuelle"
  retour=`sudo service domoticz.sh stop`
  retour=`sudo service domoticz.sh start`
  echo $logaecrire >> /home/pi/LogsArretDomoticz.log
fi
Une fois créé :
- effectuer un "chmod 777 TestPresenceDomoticz.bash" pour garantir que tous les droits soient donnés ;
- effectuez un "sudo cp TestPresenceDomoticz.bash ./root" pour le positionner dans le répertoire root
- effectuez un "sudo crontab -e" pour executer le script toutes les minutes en tant que root :
Rajouter en fin du crontab la ligne : "* * * * * /root/TestPresenceDomoticz.bash"

Toutes les minutes, le script regardera si le process Domoticz est démarré et à l'écoute sur le port 8080.
En cas d'absence de process, il tentera d'effectuer un arrêt propre du service avant de le relancer et indiquera dans le fichier "/home/pi/LogsArretDomoticz.log" une ligne indiquant le redémarrage avec la date et l'heure.

NB1: si vous avez modifié le port par défaut de Domoticz, changez le 8080 par votre numéro de port
NB2: si votre nom d'utilisateur (et répertoire) par défaut n'est pas "pi", changez le dans le chemin pour le fichier de logs.

Bonne utilisation !

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 09 févr. 2019, 12:15
par Chrominator

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 09 févr. 2019, 12:46
par vinchz31
Ha ben si j'avais su... :-)
Merci Chrominator...

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 12:23
par Dim33
Des plantages de Domoticz peuvent empêcher l’arrêt et le redémarrage du service.
J'ai un script du même style avec un second test pour s'assurer que Domoticz a bien redémarré si c'est pas le cas, reboot du système avec des notifications pushover à chaque étape.

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 15:54
par Wolfen38
Dim33 a écrit : 16 févr. 2019, 12:23 Des plantages de Domoticz peuvent empêcher l’arrêt et le redémarrage du service.
J'ai un script du même style avec un second test pour s'assurer que Domoticz a bien redémarré si c'est pas le cas, reboot du système avec des notifications pushover à chaque étape.
Tu nous fais voir ca stp ?

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 16:39
par papoo
Sinon il y a monit

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 17:47
par Wolfen38
papoo a écrit : 16 févr. 2019, 16:39 Sinon il y a monit
Oui, mais ca semble plus complexe à mettre en place qu'un simple script non ?

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 18:14
par papoo
monit n'est pas un simple script
c'est très simple à mettre en place et cela peut surveiller/ notifier pour d'autres processus
comment installer monit ? wiki domoticz
https://www.domoticz.com/wiki/Monitoring_domoticz

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 19:08
par Dim33
Wolfen38 a écrit : 16 févr. 2019, 15:54
Dim33 a écrit : 16 févr. 2019, 12:23 Des plantages de Domoticz peuvent empêcher l’arrêt et le redémarrage du service.
J'ai un script du même style avec un second test pour s'assurer que Domoticz a bien redémarré si c'est pas le cas, reboot du système avec des notifications pushover à chaque étape.
Tu nous fais voir ca stp ?
Le voilou :

Code : Tout sélectionner

#!/bin/sh
# check domoticz
status=`curl -s -i -H "Accept: application/json" "http://xxx.xxx.xxx.xxxx:xxxx/json.htm?type=devices&rid=1" | grep "status"| awk -F: '{print $2}'|sed 's/,//'| sed 's/\"//g'`
if [ $status ]
then
echo "Domoticz est demarre"
else
TITLE="Domoticz OFFLINE"
APP_TOKEN="mettre sa clé appli"
USER_TOKEN="mettre sa clé utilisateur"
MESSAGE="Domoticz OffLine - Redemarrage"
curl -s -F "token=$APP_TOKEN" \
   -F "user=$USER_TOKEN" \
   -F "title=$TITLE" \
   -F "message=$MESSAGE" https://api.pushover.net/1/messages.json
sudo service domoticz.sh stop
sleep 5
sudo service domoticz.sh start
sleep 10
status=`curl -s -i -H "Accept: application/json" "http://xxx.xxx.xxx.xxxx:xxxx/json.htm?type=devices&rid=1" | grep "status"| awk -F: '{print $2}'|sed 's/,//'| sed 's/\"//g'`
	if [ $status ]
	then
	echo "Domoticz a bien redemarre"
	TITLE="Domoticz ONLINE"
	APP_TOKEN="mettre sa clé appli"
	USER_TOKEN="mettre sa clé utilisateur"
	MESSAGE="Redemarrage Domoticz OK"
	curl -s -F "token=$APP_TOKEN" \
   -F "user=$USER_TOKEN" \
   -F "title=$TITLE" \
   -F "message=$MESSAGE" https://api.pushover.net/1/messages.json
	else
	TITLE="Reboot NUC"
	APP_TOKEN="mettre sa clé appli"
	USER_TOKEN="mettre sa clé utilisateur"
	MESSAGE="Domoticz OffLine - Reboot NUC"
	curl -s -F "token=$APP_TOKEN" \
   -F "user=$USER_TOKEN" \
   -F "title=$TITLE" \
   -F "message=$MESSAGE" https://api.pushover.net/1/messages.json
	sleep 5
	sudo reboot
	fi
fi

Rien d'exceptionnel, j'ai piqué des morceaux à droite et à gauche ...

Par contre, ce script ne protège pas du plantage du système d'exploitation sur lequel tourne Domoticz (hé oui ...... si le système plante, pas possible d’exécuter le script ... :)).
J'ai donc un autre script qui tourne sur mon NAS et qui teste par un ping mon serveur sur lequel tourne Domoticz. Si absence de réponse au ping -> envoi d'une notification qui me prévient que le système est planté.

Et enfin ...... la dernière barrière ..... une prise wifi sur lequel est branché mon serveur.... si pas d’accès à Domoticz malgré les script ci-dessus -> Hard reboot à distance.

Avec tout ça si j'ai plus de chauffage, je sais plus quoi faire :)

AAAhhhh si !, dernière chose ... le tout est branché à un onduleur avec un script qui éteint proprement le serveur si fin de batterie proche et le redémarre dés le retour du courant.

Je pense que j'ai fait le tour.

Et vous, comment faites vous pour sécuriser le système ?

Re: Script de contrôle de présence/redémarrage Domoticz

Publié : 16 févr. 2019, 19:40
par Chrominator
Bah on se sert de monit, c'est fait pour ça, et d'une batterie de recharge de mobile pour éviter les coupures de courant.