#!/usr/bin/env python3 import os import subprocess import sys """ @file poweroff.py @brief Script de inicio para cargar el proceso comprobación de clientes inactivos. @note Arranca y configura el proceso "cron". """ def main(): opengnsys = os.getenv('OPENGNSYS') if opengnsys: msg_poweroffconf = os.getenv('MSG_POWEROFFCONF', '.') print(msg_poweroffconf) ogntp = os.getenv('ogntp') status = os.getenv('status') # Sincronización horaria con servidor NTP. if ogntp and status != "offline": subprocess.run(['ntpdate', ogntp]) # Crear fichero de configuración por defecto (30 min. de espera). poweroff_conf = '/etc/poweroff.conf' with open(poweroff_conf, 'w') as f: f.write("POWEROFFSLEEP=30\nPOWEROFFTIME=\n") # Incluir zona horaria en el fichero de configuración. with open('/proc/cmdline') as f: cmdline = f.read() tz = ' '.join([x for x in cmdline.split() if x.startswith('TZ=')]) with open(poweroff_conf, 'a') as f: f.write(tz + '\n') # Lanzar el proceso "cron". subprocess.run(['cron', '-l']) # Definir la "crontab" lanzando el proceso de comprobación cada minuto. ogbin = os.getenv('OGBIN') crontab_line = f"* * * * * [ -x {ogbin}/poweroffconf ] && {ogbin}/poweroffconf\n" subprocess.run(['crontab', '-'], input=crontab_line, text=True) else: # FIXME Error: entorno de OpenGnsys no configurado. print("Error: OpenGnsys environment is not configured.") # FIXME: definir mensaje. sys.exit(1) if __name__ == "__main__": main()