ogclone-engine/ogclient/interfaceAdm/EjecutarScript.py

51 lines
1.5 KiB
Python

#!/usr/bin/python3
import os
import time
import subprocess
import sys
import ogGlobals
from SystemLib import ogEcho, ogRaiseError
prog = sys.argv[0]
if len (sys.argv) != 2:
print (f'Usage: {prog} <script_path>')
sys.exit (1)
TIME1 = time.time()
script_path = sys.argv[1]
# Clear temporary file used as log track by httpdlog
# Limpia los ficheros temporales usados como log de seguimiento para httpdlog
open (ogGlobals.OGLOGSESSION, 'w').close()
open (ogGlobals.OGLOGCOMMAND, 'w').close()
# Registro de inicio de ejecución
ogEcho (['log', 'session'], None, f'{ogGlobals.lang.MSG_INTERFACE_START} {prog} {script_path}')
with open (ogGlobals.OGLOGFILE, 'a') as logfd:
with open (script_path) as scriptfd:
logfd.write ('\n Instrucciones a ejecutar: *****************************\n')
logfd.write (scriptfd.read())
logfd.write ('\n Salida de las instrucciones: *****************************\n')
os.chmod (script_path, 0o755)
# Si mandamos la salida a OGLOGCOMMAND reescribimos lo que manda el comando.
RETVAL = subprocess.run (['bash', script_path], capture_output=True, text=True).returncode
TIME = time.time() - TIME1
if 0 == RETVAL:
ogEcho (['log', 'session'], None, f'[100] Duracion de la operacion {int(TIME // 60)}m {int(TIME % 60)}s')
else:
ogRaiseError (['log', 'session'], RETVAL, '')
ogEcho (['log', 'session'], 'error', 'Operacion no realizada')
# Registro de fin de ejecución
ogEcho (['log', 'session'], None, f'{ogGlobals.lang.MSG_INTERFACE_END} {RETVAL}')
sys.exit (RETVAL)