diff options
Diffstat (limited to 'client/shared/bin/poweroffconf')
-rwxr-xr-x | client/shared/bin/poweroffconf | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/client/shared/bin/poweroffconf b/client/shared/bin/poweroffconf new file mode 100755 index 00000000..c4813e34 --- /dev/null +++ b/client/shared/bin/poweroffconf @@ -0,0 +1,59 @@ +#!/bin/bash +#/** +#@file poweroffconf +#@brief Control de parada tras tiempo de inactividad para ahorro de energía. +#@param int_minutos Minutos de inactividad (opcional). +#@note La comprobación periódica debe ejecutarse en el "cron" del sistema. +#@note Fichero de configuración: /etc/poweroff.conf +#@author Ramón Gómez - Univ. Sevilla +#@date 2011-10-25 +#@warning License: GNU GPLv3+ +#*/ + + +# Variables generales. +OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} # Instalación de OpenGnSys +OGETC=${OGETC:-$OPENGNSYS/etc} # Configuración de OpenGnSys +POWEROFFCONF=/etc/poweroff.conf # Configuración del script +source $POWEROFFCONF + +case $# in + 0) # Sin parámetros, comprobar que existe la variable POWEROFFSLEEP. + if [ -z "$POWEROFFSLEEP" ]; then + ogRaiseError $OG_ERR_FORMAT "Sin tiempo de espera." + exit $? + fi + ;; + 1) #TODO Comprobar que el parámetro es entero positivo. + # Nuevo timepo de espera. + POWEROFFSLEEP=$1 + perl -pi -e "s/POWEROFFSLEEP=.*/POWEROFFSLEEP=$POWEROFFSLEEP/" $POWEROFFCONF + # Si se necesita, recalcular tiempo de parada. + if [ -n "POWEROFFTIME" ]; then + POWEROFFTIME=$(date --date="$POWEROFFSLEEP min" +"%H%M") + perl -pi -e "s/POWEROFFTIME=.*/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF + fi + exit 0 ;; + *) # Error de formato de ejecución. + ogRaiseError $OG_ERR_FORMAT "Formato: $0 [int_minutos]" + exit $? ;; +esac +# Comprobar si hay algún script en ejecución. +if [ -n "$(pgrep -fl $OPENGNSYS | egrep -v "$OGETC|$0")" ]; then + # Eliminar tiempo de inicio de espera, si se está ejecutando operación. + perl -pi -e 's/POWEROFFTIME=.*$/POWEROFFTIME=/' $POWEROFFCONF +else + # Si el sistema está en estado de espera, ... + NOW=$(date +"%H%M") + if [ -z "$POWEROFFTIME" ]; then + # Asignar tiempo de inicio, si no estaba definido. + POWEROFFTIME=$(date --date="$POWEROFFSLEEP min" +"%H%M") + perl -pi -e "s/POWEROFFTIME=.*$/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF + else + # Apagar el equipo si se sobrepasa el periodo de espera. + if [ $NOW -ge $POWEROFFTIME ]; then + $OPENGNSYS/scripts/poweroff + fi + fi +fi + |