summaryrefslogtreecommitdiffstats
path: root/client/shared/bin/poweroffconf
diff options
context:
space:
mode:
Diffstat (limited to 'client/shared/bin/poweroffconf')
-rwxr-xr-xclient/shared/bin/poweroffconf59
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
+