[b608176] | 1 | #!/bin/bash |
---|
| 2 | #/** |
---|
| 3 | #@file poweroffconf |
---|
| 4 | #@brief Control de parada tras tiempo de inactividad para ahorro de energía. |
---|
| 5 | #@param int_minutos Minutos de inactividad (opcional). |
---|
| 6 | #@note La comprobación periódica debe ejecutarse en el "cron" del sistema. |
---|
| 7 | #@note Fichero de configuración: /etc/poweroff.conf |
---|
| 8 | #@author Ramón Gómez - Univ. Sevilla |
---|
| 9 | #@date 2011-10-25 |
---|
| 10 | #@warning License: GNU GPLv3+ |
---|
| 11 | #*/ |
---|
| 12 | |
---|
| 13 | |
---|
| 14 | # Variables generales. |
---|
| 15 | OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} # Instalación de OpenGnSys |
---|
| 16 | OGETC=${OGETC:-$OPENGNSYS/etc} # Configuración de OpenGnSys |
---|
| 17 | POWEROFFCONF=/etc/poweroff.conf # Configuración del script |
---|
| 18 | source $POWEROFFCONF |
---|
| 19 | |
---|
| 20 | case $# in |
---|
| 21 | 0) # Sin parámetros, comprobar que existe la variable POWEROFFSLEEP. |
---|
| 22 | if [ -z "$POWEROFFSLEEP" ]; then |
---|
| 23 | ogRaiseError $OG_ERR_FORMAT "Sin tiempo de espera." |
---|
| 24 | exit $? |
---|
| 25 | fi |
---|
| 26 | ;; |
---|
| 27 | 1) #TODO Comprobar que el parámetro es entero positivo. |
---|
| 28 | # Nuevo timepo de espera. |
---|
| 29 | POWEROFFSLEEP=$1 |
---|
| 30 | perl -pi -e "s/POWEROFFSLEEP=.*/POWEROFFSLEEP=$POWEROFFSLEEP/" $POWEROFFCONF |
---|
| 31 | # Si se necesita, recalcular tiempo de parada. |
---|
| 32 | if [ -n "POWEROFFTIME" ]; then |
---|
| 33 | POWEROFFTIME=$(date --date="$POWEROFFSLEEP min" +"%H%M") |
---|
| 34 | perl -pi -e "s/POWEROFFTIME=.*/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF |
---|
| 35 | fi |
---|
| 36 | exit 0 ;; |
---|
| 37 | *) # Error de formato de ejecución. |
---|
| 38 | ogRaiseError $OG_ERR_FORMAT "Formato: $0 [int_minutos]" |
---|
| 39 | exit $? ;; |
---|
| 40 | esac |
---|
| 41 | # Comprobar si hay algún script en ejecución. |
---|
| 42 | if [ -n "$(pgrep -fl $OPENGNSYS | egrep -v "$OGETC|$0")" ]; then |
---|
| 43 | # Eliminar tiempo de inicio de espera, si se está ejecutando operación. |
---|
| 44 | perl -pi -e 's/POWEROFFTIME=.*$/POWEROFFTIME=/' $POWEROFFCONF |
---|
| 45 | else |
---|
| 46 | # Si el sistema está en estado de espera, ... |
---|
| 47 | NOW=$(date +"%H%M") |
---|
| 48 | if [ -z "$POWEROFFTIME" ]; then |
---|
| 49 | # Asignar tiempo de inicio, si no estaba definido. |
---|
| 50 | POWEROFFTIME=$(date --date="$POWEROFFSLEEP min" +"%H%M") |
---|
| 51 | perl -pi -e "s/POWEROFFTIME=.*$/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF |
---|
| 52 | else |
---|
| 53 | # Apagar el equipo si se sobrepasa el periodo de espera. |
---|
| 54 | if [ $NOW -ge $POWEROFFTIME ]; then |
---|
| 55 | $OPENGNSYS/scripts/poweroff |
---|
| 56 | fi |
---|
| 57 | fi |
---|
| 58 | fi |
---|
| 59 | |
---|