[Tuto] Wakeup et suspend a distance d'un serveur *nix
Publié : 31 janv. 2016, 15:07
Pour partage, je viens tout juste de le mettre en place.
J'ai depuis pas mal de temps un serveur, en quelque sorte mon NAS a moi fait de récup d'un PC (de jeu de mon fiston ...) et de quelques HDD. Un OS ubuntu, samba, nfs serveur ... un virtualbox dessus (pour avoir aussi un windows), il me rend pas mal service.
Ce serveur s'arrête "a la demande", piloté jusqu'à présent par mon pi multimedia: le principe quand on arrête la télé, le serveur s'arrête, pas toujours pratique
Du coup, j'ai eu envie de l'intégrer et pouvoir l'arrêter/le démarrer aussi via domoticz.
Le début, vous vous en doutez, un interrupteur virtuel pour pouvoir disposer d'un script d'allumage, un script d'arrêt. Pre requis aussi, un wakeonlan fonctionnel sur votre serveur distant pour pouvoir le réveiller a distance, un ssh pour prendre la main.
Je vais essayer de détailler un peu.
Pour le réveil a distance.
- Déterminer l’adresse mac de votre machine distante, par exemple dans un terminal utiliser ifconfig et noter l'HWaddr
- Sur le pi domoticz, installer wakeonlan (sudo apt-get install wakeonlan)
- Enfin créer un script tout bête appelant wakeonlan suivi de la mac address du serveur en question:
Pour le sleep a distance.
- Configurer un accès distant ssh via une clef (sans mdp) pour ça, créer si ce n'est pas fait, une clef rsa ou dsa sur le pi domoticz compte root:la clef publique est créee par defaut dans .ssh/_id_rsa.pub
- Logguez vous root sur le serveur distant et ajouter la clef créee précédemment dans le fichier .ssh/authorized_keys (ou authorized_keys2?).
Rapportez vous aux tutos en ligne, au final vous devez pouvoir a partir du pi (compte root) faire un ssh <ip de votre serveur> sans avoir a entrer de mot de passe. Testez le au moins une fois (host ajouté dans les "known")
- Enfin, creez un deuxième script, que j'ai nommé sleep_<serveur>:xxxxx est le nom/ip de votre serveur distant.
Petite explication: pm-suspend est la commande qui met mon serveur en veille (a adapter peut-être selon distrib ?), j'utilise depuis pas mal de temps cette commande avec un at (exécuter la commande 1mn après) suite a la lecture d'un tuto sur le sujet car un ssh+suspend "direct" ne fonctionne pas toujours.
Reste plus qu'a entrer les deux scripts de wakeup et de sleep pour le switch virtuel domoticz (scripts sous domoticz/scripts):
Action On: script://wake_<serveur>
Action Off: script://sleep_<serveur>
Testez d'abord les scripts "a la main" loggué root sur le pi domoticz, quand tout est ok il n'y a pas de raison que ça marche pas.
Note: En complément, j'ai finit par créer un script sur mon pi "multimedia" (kodi/osmc) de sorte d'appeler ce on/off lors de l'appui sur la touche de télécommande on/off (key_sleep). Le pi mmedia ne s'arrête jamais par contre l'interception de cette touche me permet de mettre en veille (ou d'éteindre via une prise en 433) des équipements auxiliaires.
J'ai depuis pas mal de temps un serveur, en quelque sorte mon NAS a moi fait de récup d'un PC (de jeu de mon fiston ...) et de quelques HDD. Un OS ubuntu, samba, nfs serveur ... un virtualbox dessus (pour avoir aussi un windows), il me rend pas mal service.
Ce serveur s'arrête "a la demande", piloté jusqu'à présent par mon pi multimedia: le principe quand on arrête la télé, le serveur s'arrête, pas toujours pratique
Du coup, j'ai eu envie de l'intégrer et pouvoir l'arrêter/le démarrer aussi via domoticz.
Le début, vous vous en doutez, un interrupteur virtuel pour pouvoir disposer d'un script d'allumage, un script d'arrêt. Pre requis aussi, un wakeonlan fonctionnel sur votre serveur distant pour pouvoir le réveiller a distance, un ssh pour prendre la main.
Je vais essayer de détailler un peu.
Pour le réveil a distance.
- Déterminer l’adresse mac de votre machine distante, par exemple dans un terminal utiliser ifconfig et noter l'HWaddr
- Sur le pi domoticz, installer wakeonlan (sudo apt-get install wakeonlan)
- Enfin créer un script tout bête appelant wakeonlan suivi de la mac address du serveur en question:
Code : Tout sélectionner
#!/bin/sh
wakeonlan xx:xx:xx:xx:xx:xx
- Configurer un accès distant ssh via une clef (sans mdp) pour ça, créer si ce n'est pas fait, une clef rsa ou dsa sur le pi domoticz compte root:
Code : Tout sélectionner
pi@raspberrypi ~ $ sudo -i
root@raspberrypi:~# ssh-keygen -t rsa
...- Logguez vous root sur le serveur distant et ajouter la clef créee précédemment dans le fichier .ssh/authorized_keys (ou authorized_keys2?).
Rapportez vous aux tutos en ligne, au final vous devez pouvoir a partir du pi (compte root) faire un ssh <ip de votre serveur> sans avoir a entrer de mot de passe. Testez le au moins une fois (host ajouté dans les "known")
- Enfin, creez un deuxième script, que j'ai nommé sleep_<serveur>:
Code : Tout sélectionner
#!/bin/sh
ssh root@xxxxx "echo 'pm-suspend' | sudo at now + 1 minutes"Petite explication: pm-suspend est la commande qui met mon serveur en veille (a adapter peut-être selon distrib ?), j'utilise depuis pas mal de temps cette commande avec un at (exécuter la commande 1mn après) suite a la lecture d'un tuto sur le sujet car un ssh+suspend "direct" ne fonctionne pas toujours.
Reste plus qu'a entrer les deux scripts de wakeup et de sleep pour le switch virtuel domoticz (scripts sous domoticz/scripts):
Action On: script://wake_<serveur>
Action Off: script://sleep_<serveur>
Testez d'abord les scripts "a la main" loggué root sur le pi domoticz, quand tout est ok il n'y a pas de raison que ça marche pas.
Note: En complément, j'ai finit par créer un script sur mon pi "multimedia" (kodi/osmc) de sorte d'appeler ce on/off lors de l'appui sur la touche de télécommande on/off (key_sleep). Le pi mmedia ne s'arrête jamais par contre l'interception de cette touche me permet de mettre en veille (ou d'éteindre via une prise en 433) des équipements auxiliaires.