web-dev-qa-db-fra.com

Empêcher l'ordinateur de dormir lorsque les connexions SSH sont activées

J'essaie d'économiser de l'énergie en commutant les ordinateurs de bureau en mode suspension lorsqu'ils sont inactifs. Mais de nombreux ordinateurs de bureau sont également accessibles via SSH par leurs propriétaires. Une solution wakeonlan est déployée pour permettre aux propriétaires d'allumer la machine, mais le problème est que les machines seront à nouveau suspendues automatiquement dans 10 minutes, même si la connexion SSH est activée.

Ce que j'essaie de faire est d'inclure les sessions SSH actives dans les définitions "d'activité".

La question est: peut-on le faire en définissant une règle polkit? Peut-on le faire en mettant un script qui s'exécute avant la suspension réelle et en l'abandonnant si des sessions SSH sont trouvées? J'ai besoin d'un moyen propre et légitime de le faire. Si ce n'est pas le cas, alors les manières hacky sont les bienvenues.

Solution naïve actuelle de hacky: edit /usr/sbin/pm-suspend:

#check for SSH sessions, and prevent suspending:
if [ "$(who | grep -cv "(:")" -gt 0 ]; then
    echo "SSH session(s) are on. Not suspending."
    exit 1
fi

Cela sert le but. Mais je ne sais pas quand une mise à jour remplacera le fichier /usr/sbin/pm-suspend. Je ne sais pas non plus comment cela fonctionnera avec d'autres implémentations de suspension telles que tuxonice.

12
Bhavin Doshi

Regardez pm-action(8) et recherchez /etc/pm/sleep.d dans la section "FICHIERS". Si l'un de ces scripts retourne avec un statut de sortie différent de zéro, la suspension est empêchée.

Instructions mises à jour pour plus de clarté:

  1. Créez donc un fichier /etc/pm/sleep.d/05_ssh_keepawake.

  2. Mettez un Shebang (#!/bin/sh) et le code mentionné dans la question de ce fichier.

  3. Définissez les autorisations d'exécution sur celui-ci:

    chmod +x /etc/pm/sleep.d/05_ssh_keepawake
    
18
David Foerster