Comando o script que informe tiempo de inactividad del ordenador! [Solucionado]

Hola
Estoy tratando de hacer un SCRIPT BASH que apague el ordenador cuando lleva mucho tiempo inactivo... pero no se como saber el tiempo que lleva inactivo el sistema desde consola para despes poder compara con algún número "custom" que desee poner (ej 20 mins). He buscado en google y no encuentro algo así hasta ahora.
¿Alguien podría ayudarme?
Saludos y gracias

Quisá esté de más decirlo... pero utilizo Debian Lenny... y ese script deseo instalarse a varios PC utilizando contab de forma que se ahora un poco de electricidad en una escuela.

Creo que el comando "w" te dice el idle de cada usuario..no estoy en mi linux para corroborarlo pero prueba que de seguro una de sus columnas dice.

$ w

Para más información usa su manual.
Abrazos!
Sebas

Creo que lo tengo!!

zeus:/home/ags# w | grep ags | cut -c 47-48 | sed 's/ //g'
00
00
48
zeus:/home/ags#

Pruebo y les digo
Abel

http://ubuntuforums.org/showthread.php?t=530973

Nos comentas si puedes verlo...

Acá les dejo el scriptcito... voy a mejorlo despues.

#!/bin/bash
#
# Debes poner una tarea en el cron
# que se ejecute periodicamente
# la misma debe mandar a ejecutar este archivo
#
echo "Comenzar comprobacion de Apagado.sh"
#Tiempo que debe esperar
threshold=30
#usuario para el que comprobará si sirve o no
userid=ags
#Sacar tiempo inactivo
inactive=`w | grep ags | cut -c 47-48 | sed 's/ //g'`
#Comprobar si está vacía la variable de tiempo inativo
if [ "$inactive" != "" ]; then
  echo "Tiempo de inactividad (IDLE): " $inactive
  #Si el tiempo de inactividad mayor que el tiempo de espera
  if [ "$inactive" -gt "$threshold" ]; then
    echo "Tiempo de espera sobrepasado APAGANDO"
    #Apagar
    /sbin/shutdown -h now
   else
    echo "Baja Espera"
  fi
else
  echo "Tiempo de inactividad (IDLE): 0"
fi
echo "FIN"

Saludos y gracias por la ayuda cebas...

aguzmans escribió:

Acá les dejo el scriptcito... voy a mejorlo despues.

#!/bin/bash
#
# Debes poner una tarea en el cron
# que se ejecute periodicamente
# la misma debe mandar a ejecutar este archivo
#
echo "Comenzar comprobacion de Apagado.sh"
#Tiempo que debe esperar
threshold=30
#usuario para el que comprobará si sirve o no
userid=ags
#Sacar tiempo inactivo
inactive=`w | grep ags | cut -c 47-48 | sed 's/ //g'`
#Comprobar si está vacía la variable de tiempo inativo
if [ "$inactive" != "" ]; then
  echo "Tiempo de inactividad (IDLE): " $inactive
  #Si el tiempo de inactividad mayor que el tiempo de espera
  if [ "$inactive" -gt "$threshold" ]; then
    echo "Tiempo de espera sobrepasado APAGANDO"
    #Apagar
    /sbin/shutdown -h now
   else
    echo "Baja Espera"
  fi
else
  echo "Tiempo de inactividad (IDLE): 0"
fi
echo "FIN"

Saludos y gracias por la ayuda cebas...

ouch! mis ojos...veo mi nombre con "c"... cry
igual está todo bien..me tendré que acostumbrar jat

Sorry... mala de mi parte... no se repetirá sebas.
y gracias nueva mente y a "nerve_net" también aunque el link ya lo había encontrado con google.
Abel

Sobre el script... le encontré un "bug" solo funciona cuando hay una sola sesión del usuario que se desea que se le apague el ordenador abierta... o sea si el script se pone a funcionar para el usuario "xxx" y este tiene por ejemplo la sesión gráfica y otra por shell ya no funciona el script porque el comando:

w | grep xxx | cut -c 47-48 | sed 's/ //g

no devuelve solo un valor sino varias líneas (una por cada sesión abierta)
Voy a tratar de solucionarlo y posteo.
Abel

Esta es la solución más facil que se me ocurre:

  w | grep usuario | grep gnome-terminal |cut -c 47-48 | sed 's/ //g'

No es la más buena pero creo que está bien... para empezar.
Abel