source: client/shared/bin/poweroffconf @ 0a735488

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 0a735488 was ac0edb0, checked in by ramon <ramongomez@…>, 11 years ago

#635: Incluir opción para deshabilitar apagado automático en script poweroffconf.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@4144 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 3.1 KB
Line 
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); "no" para deshabilitar..
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#@version  1.0.5: incluir opción para deshabilitar ahorro de energía.
11#@author   Ramón Gómez - Univ. Sevilla
12#@date     2014-02-07
13#@warning  License: GNU GPLv3+
14#*/
15
16
17# Variables generales.
18OPENGNSYS=${OPENGNSYS:-/opt/opengnsys}  # Instalación de OpenGnSys
19OGETC=${OGETC:-$OPENGNSYS/etc}          # Configuración de OpenGnSys
20POWEROFFCONF=/etc/poweroff.conf         # Configuración del script
21
22# Error si no existe el fichero de configuración de ahorro de energía.
23if [ ! -f $POWEROFFCONF ]; then
24    ogRaiseError $OG_ERR_NOTFOUND "$POWEROFFCONF"
25    exit $?
26fi
27# Obtener parámetros de configuración de ahorro de energía.
28source $POWEROFFCONF
29
30case $# in
31    0)  # Sin parámetros, comprobar que existe la variable POWEROFFSLEEP.
32        if [ -z "$POWEROFFSLEEP" ]; then
33             ogRaiseError $OG_ERR_FORMAT "Sin tiempo de espera."
34             exit $?
35        fi
36        ;;
37    1)  # Nuevo timepo de espera.
38        POWEROFFSLEEP="$1"
39        # Se deshabilita si se introduce la cadena "no" como tiempo de espera.
40        [ "$POWEROFFSLEEP" == "no" ] && POWEROFFSLEEP=
41        # Error si tiempo de espera no es nulo o entero positivo.
42        if [[ ! "$POWEROFFSLEEP" =~ ^[0-9]*$ ]]; then
43            ogRaiseError $OG_ERR_FORMAT "Parámetro debe ser núm. minutos o \"no\" para deshabilitar."
44            exit $?
45        fi
46        # Actualizar fichero de configuración con nuevo periodo de parada.
47        perl -pi -e "s/POWEROFFSLEEP=.*/POWEROFFSLEEP=$POWEROFFSLEEP/" $POWEROFFCONF
48        # Si se necesita, recalcular tiempo de parada.
49        if [ -n "POWEROFFTIME" ]; then
50            # Asignar tiempo de apagado si no está deshabilitado y actualizar fichero.
51            POWEROFFTIME=${POWEROFFSLEEP:+$(date --date="$POWEROFFSLEEP min" +"%H%M")}
52            perl -pi -e "s/POWEROFFTIME=.*/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF
53        fi
54        exit 0 ;;
55    *)  # Error de formato de ejecución.
56        ogRaiseError $OG_ERR_FORMAT "Formato: $0 [int_minutos | no]"
57        exit $? ;;
58esac
59# Comprobar si hay algún script en ejecución.
60if [ -n "$(pgrep -fl $OPENGNSYS | egrep -v "$OGETC|$0")" ]; then
61    # Eliminar tiempo de inicio de espera, si se está ejecutando operación.
62    perl -pi -e 's/POWEROFFTIME=.*$/POWEROFFTIME=/' $POWEROFFCONF
63else
64    # Si el sistema está en estado de espera, ...
65    NOW=$(date +"%H%M")
66    if [ -z "$POWEROFFTIME" ]; then
67        # Asignar tiempo de inicio, si no estaba definido.
68        POWEROFFTIME=$(date --date="$POWEROFFSLEEP min" +"%H%M")
69        perl -pi -e "s/POWEROFFTIME=.*$/POWEROFFTIME=$POWEROFFTIME/" $POWEROFFCONF
70    else
71        # Apagar el equipo si se sobrepasa el periodo de espera.
72        if [ $NOW -ge $POWEROFFTIME ]; then
73            $OPENGNSYS/scripts/poweroff
74        fi
75    fi
76fi
77
Note: See TracBrowser for help on using the repository browser.