diff --git a/src/opengnsys/modules/server/ogAdmClient/__init__.py b/src/opengnsys/modules/server/ogAdmClient/__init__.py index 6de72ca..fe3d2a4 100644 --- a/src/opengnsys/modules/server/ogAdmClient/__init__.py +++ b/src/opengnsys/modules/server/ogAdmClient/__init__.py @@ -537,6 +537,46 @@ class ogAdmClientWorker (ogLiveWorker): } return self.respuestaEjecucionComando (cmd, herror, ids) + def do_EjecutarScript (self, post_params): + for k in ['nfn', 'scp', 'ids']: + if k not in post_params: + logger.error (f'required parameter ({k}) not in POST params') + return {} + + nfn = post_params['nfn'] + scp = unquote (post_params['scp']) + ids = post_params['ids'] + + self.muestraMensaje (8) + + filescript = f'/tmp/_script_{self.IPlocal}' ## Nombre del archivo de script + with open (filescript, 'w') as fd: + fd.write (scp) + + try: + self.interfaceAdmin (nfn, [filescript]) + self.muestraMensaje (22) + herror = 0 + except: + logger.warning ('Error al ejecutar el comando') + self.muestraMensaje (21) + herror = 1 + + ## Toma configuración de particiones + cfg = self.LeeConfiguracion() + if not cfg: + logger.warning ('No se ha podido recuperar la configuración de las particiones del disco') + herror = 36 + + #herror=ejecutarCodigoBash(scp); ## ogAdmClient.c:2004 + + cmd = { + 'nfn': 'RESPUESTA_EjecutarScript', + 'cfg': cfg, + } + self.muestraMenu() + return self.respuestaEjecucionComando (cmd, herror, ids) + def process_Actualizar (self, path, get_params, post_params, server): logger.debug ('in process_Actualizar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server)) return self._long_running_job ('Actualizar', self.do_Actualizar, args=(post_params,)) @@ -588,7 +628,8 @@ class ogAdmClientWorker (ogLiveWorker): return self._long_running_job ('IniciarSesion', self.do_IniciarSesion, args=(post_params,)) def process_EjecutarScript (self, path, get_params, post_params, server): - logger.warning ('in process_EjecutarScript') + logger.debug ('in process_EjecutarScript, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server)) + return self._long_running_job ('EjecutarScript', self.do_EjecutarScript, args=(post_params,)) def process_EjecutaComandosPendientes (self, path, get_params, post_params, server): logger.warning ('in process_EjecutaComandosPendientes')