75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os
|
|
import sys
|
|
import shutil
|
|
import time
|
|
import subprocess
|
|
|
|
import ogGlobals
|
|
from SystemLib import ogGetCaller, ogEcho
|
|
from DiskLib import ogDiskToDev
|
|
from FileSystemLib import ogUnmountAll
|
|
from CacheLib import ogUnmountCache
|
|
|
|
DEVICE = os.environ.get ('DEVICE', '')
|
|
ogstatus = os.environ.get ('ogstatus', '')
|
|
|
|
PROG = os.path.basename (sys.argv[0])
|
|
is_reboot = 'reboot'==PROG
|
|
|
|
TIME = None
|
|
try:
|
|
TIME = int (sys.argv[1])
|
|
except:
|
|
pass
|
|
|
|
# Registrar ejecución manual de script.
|
|
c = ogGetCaller()
|
|
if c in ['browser', 'OGBrowser', 'bash']:
|
|
ogEcho ('log', 'info', f'Script: {PROG}')
|
|
|
|
# Cargamos el valor por defecto del tiempo de sleep
|
|
if TIME:
|
|
print (f'[5] Se ha introducido un retardo de {TIME} segundos para reiniciar')
|
|
else:
|
|
TIME = ogGlobals.OGSLEEP
|
|
print (f'[5] No se ha introducido un retardo, {TIME} segundos para reiniciar')
|
|
|
|
# No registrar errores.
|
|
#DEBUG=no
|
|
|
|
# Desmontar los sistemas de archivos y la caché local.
|
|
print ('[10] Desmontar todos los sistemas de archivos.')
|
|
subprocess.run (['sync'])
|
|
ndisks = len (ogDiskToDev())
|
|
for d in range (1, ndisks+1):
|
|
ogUnmountAll (d)
|
|
print ('[50] Desmontar cache local.')
|
|
ogUnmountCache()
|
|
|
|
# Volver a registrar errores.
|
|
#DEBUG=yes
|
|
|
|
if is_reboot:
|
|
print ('[90] Reiniciar el equipo.')
|
|
else:
|
|
print ('[70] Apagando el equipo.')
|
|
# Estado correcto de Wake-On-Lan antes de apagar.
|
|
subprocess.run (['ethtool', '-s', DEVICE, 'wol', 'g'], stderr=subprocess.DEVNULL)
|
|
# Detectar Busybox.
|
|
BUSYBOX = shutil.which ('busyboxOLD')
|
|
if not BUSYBOX: BUSYBOX = shutil.which ('busybox')
|
|
|
|
# Retardo para dar lugar al registro en cola de acciones.
|
|
time.sleep (TIME)
|
|
# Parar Browser para evitar "cuelgues".
|
|
if 'offline' != ogstatus:
|
|
subprocess.run (['killall', 'QtWebEngineProcess', 'OGBrowser', 'i3', 'sway', 'Xorg', 'startx'], stderr=subprocess.DEVNULL)
|
|
# Apagar.
|
|
|
|
if is_reboot:
|
|
subprocess.run ([BUSYBOX, 'reboot'])
|
|
else:
|
|
subprocess.run ([BUSYBOX, 'poweroff'])
|