blob: c4813e34002ec1b1fd38eaf53c27ad86c1833a85 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
|