Pages : 1
#1 Le 12/11/2016, à 15:13
- Machtheld
[résolu] Mise en veille par SSH
Bonjour à tous,
J'ai un serveur qui se trouve dans un placard, et dont les commandes ne sont pas accessibles. Pour le réveiller, j'utilise WakeOnLan, soit de mon PC, soit de mon téléphone portable.
Mais je n'ai jamais trouvé de méthode pour le mettre en veille par le même canal. Tout ce que j'ai trouvé, c'est de faire un script pour mettre le serveur en hibernation, et d'exécuter le script à heure fixe (après minuit ) au moyen d'une tâche cron. L'inconvénient est bien sûr que si j'utilise le serveur à 8h de matin, il va tourner ensuite toute la journée.
Lorsque je lance le script via SSH, le processus d'hibernation ne va pas jusqu'au bout, et le serveur reste bloqué sur un écran noir et curseur clignotant (peut-être parce que la connexion SSH se coupe immédiatement?)
Voilà le script en question: sudo systemctl hibernate
Y a-t-il un moyen de faire hiberner le serveur par SSH? Mes recherches sur internet n'ont rien donné de probant. Merci
Dernière modification par Machtheld (Le 13/11/2016, à 22:15)
Hors ligne
#2 Le 12/11/2016, à 15:25
- gl38
Re : [résolu] Mise en veille par SSH
Pourquoi hiberner ? Le wake-on-lan réveille un ordinateur éteint, me semble-t-il, donc un shutdown devrait marcher.
Cordialement,
Guy
En ligne
#3 Le 12/11/2016, à 15:28
- sinbad83
Re : [résolu] Mise en veille par SSH
Bonjour,
as-tu essayé
systemctl suspend -i
La connaissance n'est pas une denrée rare, il faut la partager avec les autres.
Linux registered #484707
Site: www.coursinforev.org/doku.php
Desktop AMD Ryzen 5-3600, RAM 16GB, Ubuntu 20.10, HP Pavillon G6 Ubuntu 20.10 et Ten, Serveur Ubuntu 18.04
Hors ligne
#4 Le 12/11/2016, à 16:00
- MicP
Re : [résolu] Mise en veille par SSH
Ou alors, par ssh, tu te connecte sous le compte root et tu créé une tâche cron qui va lancer dans les 5 minutes la commande d'arrêt ou hybernation ou veille,
et il ne te restera plus qu'à quitter le compte root et fermer ta session ssh (qui devait sans doute être la cause du blocage que tu avais constaté)
man crontab
crontab -e
Hors ligne
#5 Le 12/11/2016, à 18:38
- Machtheld
Re : [résolu] Mise en veille par SSH
Merci à tous les trois!
@Guy sur ma bécane, le WakeOnLan ne fonctionne que sur un ordi en veille ou en hibernation
@MicP merci, mais cela me paraît un peu contraignant tout de même, ou alors j'ai mal compris ta solution...
@Sinbad super, l'hibernation ne marche pas en ssh, mais la veille marche sans problème.
Un mystère cependant, tout comme pour l'hibernation: il faut que je tape le mot de passe en SSH pour hiberner, alors que cela n'est pas nécessaire lorsqu'on exécute la commande directement depuis le serveur. Sans ce petit problème, je pourrais installer un simple bouton sur mon téléphone pour mettre le serveur en veille, comme pour le WakeOnLan. Si vous avez des idées...
Merci encore!
Hors ligne
#6 Le 13/11/2016, à 13:29
- Skubu
Re : [résolu] Mise en veille par SSH
Un mystère cependant, tout comme pour l'hibernation: il faut que je tape le mot de passe en SSH pour hiberner, alors que cela n'est pas nécessaire lorsqu'on exécute la commande directement depuis le serveur. Sans ce petit problème, je pourrais installer un simple bouton sur mon téléphone pour mettre le serveur en veille, comme pour le WakeOnLan. Si vous avez des idées...
Merci encore!
Salut,
Par SSH, tu te connectes bien en root ?
Debian / Archlinux | Gnome / KDE
Hors ligne
#7 Le 13/11/2016, à 13:55
- Machtheld
Re : [résolu] Mise en veille par SSH
Salut Skubu,
Non, en simple utilisateur...
Hors ligne
#8 Le 13/11/2016, à 18:35
- Skubu
Re : [résolu] Mise en veille par SSH
Connectes toi en root si tu veux hiberner...
Debian / Archlinux | Gnome / KDE
Hors ligne
#9 Le 13/11/2016, à 19:44
- MicP
Re : [résolu] Mise en veille par SSH
…Lorsque je lance le script via SSH,…
OK tu as donc fait un script que tu lance par ssh.
Alors imaginons que dans ce script, tu aie une commande qui créé un fichier dans ton répertoire personnel,
comme par exemple :
touch ~/ArretDeLaMachine
Bon. Le fichier ArretDeLaMachine a été créé dans ton répertoire personnel, c'est déjà ça.
=======
Ce fichier est bien sûr accessible au compte root
Le compte root peut aussi utiliser sa crontab pour lancer une ligne de commandes toutes les 5 minutes.
Voilà un exemple de ligne de commande que la crontab de root pourrait lancer :
rm /home/Machtheld/ArretDeLaMachine && systemctl hibernate || sed -i '/ArretDeLaMachine/d' /var/log/syslog
Ce qui donne en ligne crontab :
*/5 * * * * rm /home/Machtheld/ArretDeLaMachine && /bin/systemctl hibernate || sed -i '/ArretDeLaMachine/d' /var/log/syslog
Du coup, ce ne sera plus ta connexion ssh qui lancera la commande hybernate, car elle aura déjà été fermée entre temps.
EDIT (18/11/2016) : Toutes les 5 minutes, un enregistrement concernant cette action sera ajouté dans le fichier /var/log/syslog
Ça risque de faire beaucoup de lignes à la fin, aussi, j'ai rajouté une commande de suppression de ces lignes
qui sera exécutée si le fichier /home/Machtheld/ArretDeLaMachine n'a pu être trouvé et supprimé.
Et comme la crontab de root lance toute les 5 minutes la ligne de commandes :
si et seulement si /home/Machtheld/ArretDeLaMachine a été trouvé et supprimé,
alors la commande : systemctl hibernate sera lancée.
sinon, toutes les lignes du fichier /var/log/syslog contenant le mot ArretDeLaMachine seront supprimées
NOTE : Je n'ai pas pu tester la commande systemctl hybernate car je n'utilise pas de swap,
testez là d'abord sinon vous ne constaterez que la disparition du fichier /home/Machtheld/ArretDeLaMachine
Il y a plus simple, mais bon : Je ne sais pas grand chose tu contexte, ni de ce smartphone et des actions qu'il peut faire…
Perso, j'enverrais directement le fichier ~/ArretDeLaMachine par scp avec une authentification par clef ssh
mais est-ce que ton smatphone sait ou peut le faire ?…
Dernière modification par MicP (Le 18/11/2016, à 14:08)
Hors ligne
#10 Le 13/11/2016, à 22:03
- Machtheld
Re : [résolu] Mise en veille par SSH
Salut MicP,
Cette fois, j'ai enfin compris. Pas idiot du tout comme idée , et merci beaucoup pour ta pédagogie et pour tes explications détaillées!
Je viens d'appliquer ta méthode pour mettre en veille (pas en hibernation) le serveur à partir de mon PC, et cela fonctionne parfaitement.
Pour le smartphone, j'ai une petite application toute simple, SSH button: on rentre quelques informations comme la commande à exécuter, l'adresse IP et le mot de passe. Je viens juste de tester, et cela fonctionne également. Je peux désormais mettre mon serveur en veille en appuyant sur un bouton.
Un grand merci pour tes explications qui vont sûrement faire plus d'un heureux!
Dernière modification par Machtheld (Le 13/11/2016, à 22:15)
Hors ligne
#11 Le 14/11/2016, à 00:35
- SamheG
Re : [résolu] Mise en veille par SSH
Salut,
As-tu essayé en utilisant screen ?
Ça a l'avantage de continuer l'exécution des commandes malgré une coupure de ssh.
Hors ligne
#12 Le 18/11/2016, à 13:36
- MicP
Re : [résolu] Mise en veille par SSH
Il reste à résoudre le problème des messages qui seront enregistrés dans le fichier /var/log/syslog du fait de l'exécution de cette tâche cron.
Ça risque de faire beaucoup de lignes inutiles ajoutées dans le fichier /var/log/syslog
Donc, la ligne de commande lancée par crontab devrait être modifiée par :
rm /home/Machtheld/ArretDeLaMachine && /bin/systemctl hibernate || sed -i '/ArretDeLaMachine/d' /var/log/syslog
Il existe peut-être une meilleure méthode, mais je ne la connais pas.
Je modifie le message de mon post #9 en conséquence
Dernière modification par MicP (Le 18/11/2016, à 14:13)
Hors ligne
#13 Le 18/11/2016, à 15:34
- Machtheld
Re : [résolu] Mise en veille par SSH
Merci MicP! Je vais modifier mon crontab!
Bonne journée
Hors ligne
Pages : 1