Comment un script peut-il détecter le temps d'inactivité d'un utilisateur?

30

Je veux vérifier, dans un script bash, combien de temps l’utilisateur d’une session X a été inactif.

L'utilisateur lui-même n'a pas besoin d'utiliser bash, mais simplement X. Si l'utilisateur a simplement déplacé la souris, par exemple, une bonne réponse serait "inactif pendant 0 seconde". S'il n'a pas touché l'ordinateur en 5 minutes, une bonne réponse serait "inactive pendant 300 secondes"

La raison pour laquelle vous ne devez pas utiliser xautolock immédiatement est de pouvoir implémenter un comportement complexe. Par exemple, si l'utilisateur est inactif pendant 10 minutes, essayez de suspendre, s'il est inactif pendant plus de 5 minutes, éteignez (je sais que cela semble étrange, mais la suspension ne fonctionne pas toujours ici ...)

    
posée josinalvo 17.10.2012 - 18:40
la source

2 réponses

34

Vous venez de trouver un moyen simple de le faire.

Il existe un programme appelé xprintidle qui fait l'affaire

obtenir le temps d'inactivité (en millisecondes) est aussi simple que

xprintidle

et à installer

apt-get install xprintidle

Pour les administrateurs système, cela fonctionne aussi à distance

À partir d’une session ssh :

export DISPLAY=:0 && sudo -u john xprintidle

où john est l'utilisateur connecté à la session X sur la machine distante.

    
réponse donnée josinalvo 17.10.2012 - 19:14
la source
2

Réponse de ici :

In bash

w | tr -s " " | cut -d" " -f1,5 | tail -n+3

vous donne une paire nom d'utilisateur / idletime pour chaque shell. Donc, fondamentalement, vous pouvez obtenir les informations d'inactivité via la commande w

    
réponse donnée Dan 17.10.2012 - 18:44
la source

Lire d'autres questions sur les étiquettes