Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/11/2016, à 16: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 roll ) 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 smile

Dernière modification par Machtheld (Le 13/11/2016, à 23:15)

Hors ligne

#2 Le 12/11/2016, à 16: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

Hors ligne

#3 Le 12/11/2016, à 16: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, à 17: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, à 19: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, à 14:29

Skubu

Re : [résolu] Mise en veille par SSH

Machtheld a écrit :

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, à 14:55

Machtheld

Re : [résolu] Mise en veille par SSH

Salut Skubu,

Non, en simple utilisateur...

Hors ligne

#8 Le 13/11/2016, à 19: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, à 20: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, à 15:08)

Hors ligne

#10 Le 13/11/2016, à 23: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 smile , 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, à 23:15)

Hors ligne

#11 Le 14/11/2016, à 01: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, à 14: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, à 15:13)

Hors ligne

#13 Le 18/11/2016, à 16:34

Machtheld

Re : [résolu] Mise en veille par SSH

Merci MicP! Je vais modifier mon crontab!

Bonne journée smile

Hors ligne