#/** #@file PostConfLib.py #@brief Librería o clase PostConf #@class PostConf #@brief Funciones para la postconfiguración de sistemas operativos. #@warning License: GNU GPLv3+ #*/ import os import subprocess import ogGlobals import SystemLib import FileSystemLib import FileLib import NetLib #/** # ogCleanOs int_ndisk int_nfilesys #@brief Elimina los archivos que no son necesarios en el sistema operativo. #@param int_ndisk nº de orden del disco #@param int_nfilesys nº de orden del sistema de archivos #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. #@exception OG_ERR_PARTITION Partición desconocida o no accesible. #@note Antes incluido en la funcion ogReduceFs #@return (nada) #*/ ## #/** # ogInstallMiniSetup int_ndisk int_npartition str_filename [str_admuser str_admpassword bool_autologin [str_autouser str_autopassword] ] #@brief Metafunción para instalar archivo que se ejecutará en el arranque de Windows. #@see ogInstallFirstBoot ogInstallRunonce #*/ ## #/** # ogInstallFirstBoot int_ndisk int_npartition str_filename #@brief Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado #@param int_ndisk nº de orden del disco #@param int_npartition nº de orden de la partición #@param str_filename nombre del archivo .cmd a ejecutar en el arranque #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@note El archivo estará en system32 y será visible por el sistema. #*/ ## #/** # ogInstallRunonce int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password] #@brief Crea el archivo cmd que se ejecutara en el runonce de un usuario administrador #@param int_ndisk nº de orden del disco #@param int_npartition nº de orden de la partición #@param str_filename nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema) #@param str_adm_user usuario administrador para hacer autologin y ejecutar el runonce #@param str_adm_password password del usuario administrador #@param bool_autologin si despues de la postconfiguracion queremos que la maquina haga autologin (0 o 1) #@param str_auto_user Usuario con el que queremos que haga autologin despues de la postconfiguracion #@param str_auto_password Password del usuario que hara autologin #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #*/ ## #/** # ogAddCmd int_ndisk int_npartition str_filename str_commands #@brief Añade comandos al cmd creado por ogInstalMiniSetup #@param int_ndisk nº de orden del disco #@param int_npartition nº de orden de la partición #@param str_filename nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema #@param str_commands comando o comandos que se añadiran al fichero #@return #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. #*/ ## #/** # ogDomainScript int_ndisk int_npartition str_domain str_user str_password #@brief Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup #@param int_ndisk nº de orden del disco #@param int_npartition nº de orden de la partición #@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs #@param str_domain dominio donde se quiere conectar #@param str_user usuario con privilegios para unir al dominio #@param str_password password del usuario con privilegios #@return #@exception OG_ERR_FORMAT Formato incorrecto. #*/ ## ### PRUEBAS. #/** # ogConfigureOgagent int_ndisk int_filesys #@brief Modifica el fichero de configuración del nuevo agente OGAent para sistemas operativos. #@param int_ndisk nº de orden del disco #@param int_filesys nº de orden del sistema de archivos #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero o dispositivo no encontrado. #@exception OG_ERR_LOCKED Sistema de archivos bloqueado. #*/ ## def ogConfigureOgagent (disk, par): mntdir = FileSystemLib.ogMount (disk, par) if not mntdir: return for agentdir in ['usr/share/OGAgent', 'Program Files/OGAgent', 'Program Files (x86)/OGAgent', 'Applications/OGAgent.app']: cfgfile = FileLib.ogGetPath (file=f'{mntdir}/{agentdir}/cfg/ogagent.cfg') if cfgfile: break if not cfgfile: SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTFOUND, 'ogagent.cfg') return ogcore_scheme = 'https' ogcore_ip = NetLib.ogGetServerIp() ogcore_port = NetLib.ogGetServerPort() cfgfile_patched = cfgfile + '.patched' in_opengnsys_section = False with open (cfgfile, 'r') as fdin: with open (cfgfile_patched, 'w') as fdout: while True: lineout = linein = fdin.readline() if not linein: break if in_opengnsys_section: if 'remote' == linein[0:6]: lineout = f'remote={ogcore_scheme}://{ogcore_ip}:{ogcore_port}/opengnsys/rest/\n' if '[' == linein[0:1]: in_opengnsys_section = False if '[opengnsys]' == linein[0:11]: in_opengnsys_section = True fdout.write (lineout) os.rename (cfgfile_patched, cfgfile) #/** # ogInstallLaunchDaemon int_ndisk int_nfilesys str_filename #@brief Instala archivo que se ejecutará en el arranque de macOS. #@param int_ndisk nº de orden del disco #@param int_nfilesys nº de orden del sistema de archivos #@param str_filename nombre del script #return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero o directorio no encontrado. #@npte Crea ficheros de configuración /Library/LaunchDaemon/es.opengnsys.Script.plist. #*/ ## ### PRUEBAS. #/** # ogAddToLaunchDaemon int_ndisk int_nfilesys str_filename str_commands #@brief Añade comandos al script creado por ogInstalLaunchDaemon. #@param int_ndisk nº de orden del disco #@param int_nfilesys nº de orden del sistema de archivos #@param str_filename nombre del script (siempre se guardará en /usr/share para que sea visible por el sistema #@param str_commands comando o comandos que se añadiran al fichero #return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero o directorio no encontrado. #*/ ## #/** # ogUninstallLinuxClient int_ndisk int_filesys #@brief Desinstala el cliente OpenGnSys para sistemas operativos GNU/Linux. #@param int_ndisk nº de orden del disco #@param int_filesys nº de orden del sistema de archivos #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos. #@exception OG_ERR_LOCKED Sistema de archivos bloqueado. #*/ ## def ogUninstallLinuxClient (disk, par): mntdir = FileSystemLib.ogMount (disk, par) if not mntdir: return for f in [ f'{mntdir}/usr/sbin/ogAdmLnxClient', f'{mntdir}/sbin/ogAdmLnxClient', f'{mntdir}/usr/local/sbin/ogAdmLnxClient', f'{mntdir}/etc/ogAdmLnxClient.cfg', f'{mntdir}/usr/local/etc/ogAdmLnxClient.cfg', ]: try: os.remove (f) except: pass for f in [ f'{mntdir}/etc/rc.local', f'{mntdir}/etc/rc.d/rc.local', f'{mntdir}/usr/local/etc/rc.local', f'{mntdir}/usr/local/etc/rc.d/rc.local', ]: subprocess.run (['sed', '-i', '-e', '/ogAdmLnxClient/ d', f], stderr=subprocess.DEVNULL) #/** # ogUninstallWindowsClient int_ndisk int_filesys str_filename #@brief Desinstala el cliente OpenGnSys para sistemas operativos Windows. #@param int_ndisk nº de orden del disco #@param int_npartition nº de orden de la partición #@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos. #@exception OG_ERR_LOCKED Sistema de archivos bloqueado. #*/ ##