Quiero escribir un script que muestre cuántos minutos está inactivo el usuario. Desde el último toque del teclado y el ratón. Ejemplo:
#!/bin/bash
while true
do
command_lines...
...
sleep 60
echo $var
done
Resultado:
La computadora/usuario está inactivo durante 1 minuto.
La computadora/usuario está inactivo durante 2 minutos.
...
La computadora/usuario está inactivo durante 5 minutos.
...
¿Podemos hacer eso? Puede ser en Bash, Python, etc.
Respuesta1
El comando "w" debería ayudar, desde la página de manual:
w: muestra quién ha iniciado sesión y qué está haciendo.
# w | awk '{if (NR!=1) {print $1,$5 }}'
USER IDLE
root 0.00s
Respuesta2
El teclado y el mouse no son un concepto claro en un sistema multiusuario, donde puede haber múltiples servidores X ejecutándose en la máquina, algunos conectados a uno o más teclados o ratones físicos, otros no, o servidores X remotos donde se conectan los terminales que se ejecutan en la máquina. a, o bash shells que se ejecutan sobre ssh y muchas más formas para que "bash" reciba información de un usuario...
El "xprintidle" le dará el tiempo de inactividad del servidor X al que está conectado (ese servidor X puede ser local o remoto, incluso local, no necesariamente puede ser el actualmente activo en el sistema)
El tiempo de modificación de $TTY le indicará el tiempo de inactividad del terminal. stat -c %Y "$TTY" es su última hora de modificación en segundos, que puede restar "$(date +%s)" (si está en un sistema GNU).