All links of one day
in a single page.
<Previous day - Next day>

rss_feedDaily RSS Feed
floral_left The Daily Shaarli floral_right
——————————— Sunday 25, April 2021 ———————————

sleepd : exécuter une action (ex : éteindre) après un délai d'inactivité utilisateur sur un parc Ubuntu 20.04

Nous avons plusieurs centaines de machines Ubuntu 20.04 qui ne sont pas attribuées à un utilisateur précis.

Nous voulons éteindre automatiquement ces machines après une période d'inactivité.

Critères :

  • Je parle d'inactivité "tout court", pas inactivité sur batterie ;

  • Logiciel sans interface graphique doté d'un fichier de configuration (que l'on peut donc modifier avec Puppet).


sleepd

sleepd est packagé dans Debian GNU/Linux, mais il ne l'est plus dans Ubuntu après la version 14.04.

Le paquet Debian fonctionne très bien sur Ubuntu :

  • apt download sleepd depuis une machine Debian ;

  • apt install libx86-1 pm-utils vbetool sur une machine Ubuntu afin d'installer les dépendances ;

  • dpkg -i sleepd_2.10_amd64.deb ;

  • Ajouter les options que l'on veut dans /etc/default/sleepd : « -u » pour le délai avant action ; « -s /sbin/poweroff » pour éteindre la machine au lieu de la mettre en veille ; « -w » pour comptabiliser également l'activité sur d'éventuelles sessions SSH ;

  • systemctl restart sleepd.


Alternatives

autopoweroff. Trop complet pour notre usage (il peut vérifier la consommation CPU et la joignabiltié de machines dont celle-ci dépend avant d'exécuter une action) donc fichier de configuration plus touffu.

CRON. Au début, je voulais écrire une tâche planifiée qui aurait tourné toutes les heures non-ouvrées et qui aurait utilisé la commande w pour déterminer si des utilisateurs ont eu une activité récente avant d'éteindre. Deux inconvénients : 1) pourquoi réinventer la roue ? ; 2) si l'on veut désactiver l'arrêt automatique lors d'une maintenance, il faut commenter le contenu d'un fichier, ce qui est moins pratique que systemctl stop sleepd.

-