78 lines
4.0 KiB
Python
78 lines
4.0 KiB
Python
import sys
|
|
import subprocess
|
|
|
|
#!/usr/bin/env python3
|
|
"""
|
|
configureOsCustom
|
|
@brief Plantilla para script de configuración personalizada de sistema operativo restaurado.
|
|
@param $1 nº de disco
|
|
@param $2 nº de partición
|
|
@param $3 Repositorio: CACHE, REPO o dirección IP (opcional)
|
|
@param $4 Nombre canónico de la imagen sin extensión (opcional)
|
|
@warning Renombrar este fichero como "configureOsCustom" para sustituir al script estándar "configureOs".
|
|
@note Los parámetros disco y partición son obligatorios y opcionalmente puede recibir también el repositorio y la imagen usada para en el despliegue.
|
|
"""
|
|
|
|
def main():
|
|
if len(sys.argv) not in [3, 5]:
|
|
og_raise_error("OG_ERR_FORMAT", "Usage: configureOsCustom int_ndisc int_npart [str_repo str_imgname]")
|
|
|
|
disk = sys.argv[1]
|
|
part = sys.argv[2]
|
|
repo = sys.argv[3].upper() if len(sys.argv) > 3 else None
|
|
imgname = sys.argv[4] if len(sys.argv) > 4 else None
|
|
|
|
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
|
|
|
|
# Paso 1: Adaptar el código de ejemplo para postconfiguración personalizada.
|
|
configure_os(disk, part)
|
|
|
|
ostype = og_get_os_type(disk, part)
|
|
if ostype == "Windows":
|
|
# Postconfiguración de Windows.
|
|
pass
|
|
# Descomentar la siguiente línea para cambiar usuario de inicio.
|
|
# subprocess.run(["ogSetWinlogonUser", disk, part, " "], check=True)
|
|
# OPCIONAL: desactivar el chkdisk de windows tras la restauracion. Requiere configuracion previa en el engine.cfg
|
|
# subprocess.run(["ogLoadHiveWindows", disk, part], check=True)
|
|
# subprocess.run(["ogSetWindowsChkdisk", "OGWINCHKDISK"], check=True)
|
|
# subprocess.run(["ogUpdateHiveWindows"], check=True)
|
|
elif ostype == "Linux":
|
|
# Postconfiguración de GNU/Linux.
|
|
pass
|
|
# OPCIONAL Para UEFI: cambia el UUID de la partición (para tener dos linux en un equipo)
|
|
# subprocess.run(["ogUuidChange", disk, part], check=True)
|
|
# OPCIONAL Limpiar dispositivos reconocidos previamente
|
|
# subprocess.run(["ogCleanLinuxDevices", disk, part], check=True)
|
|
# Instala (no configura) el codigo de arranque del Grub en la partición (no lo configura, se mantiene el original de la imagen)
|
|
# subprocess.run(["ogGrubInstallPartition", disk, part], check=True)
|
|
# OPCIONAL: instala y configura el codigo de arranque del Grub en el MBR (no lo configura, se mantiene el original de la imagen)
|
|
# subprocess.run(["ogGrubInstallMbr", disk, part], check=True)
|
|
# OPCIONAL: Instala y configura el Grub en el MBR y lo autoconfigura, entradas para los sistemas operativos, además al linux restaurado le añade los parámetros indicados.
|
|
# subprocess.run(["ogGrubInstallMbr", disk, part, "TRUE", "irqpoll pci=noacpi noresume quiet splash"], check=True)
|
|
elif ostype == "MacOS":
|
|
# Postconfiguración de Mac OS X.
|
|
with open(f"/mnt/{disk}/{part}/var/root/postconfd.sh", "a") as f:
|
|
f.write("""
|
|
### NOTA: descomentar las opciones deseadas.
|
|
# Activar Journaling en HFS+ (no usar si el cliente continua en OpenGnsys).
|
|
#diskutil enableJournal disk$[$1-1]s$2
|
|
# Pedir usuario y clave en pantalla de conexión.
|
|
#defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool yes
|
|
# No mostrar botón de cambio rápido de usuario.
|
|
#defaults write /Library/Preferences/.GlobalPreferences MultipleSessionEnabled -bool NO
|
|
# Bloquear escritorio, fondo, dock, etc del usuario "usuario".
|
|
#chflags uchange /Users/usuario/Library/Preferences/com.apple.desktop.plist
|
|
#chflags uchange /Users/usuario/Library/Preferences/com.apple.dock.plist
|
|
#chflags uchange /Users/usuario/Desktop
|
|
# Añadir usuario "usuario" a la lista de desarrolladores de Xcode.
|
|
#DevToolsSecurity --enable
|
|
#dscl . -append /Groups/_developer GroupMembership usuario
|
|
# Bajar volumen (valor entre 0 y 7).
|
|
#osascript -e 'set volume 1'
|
|
""")
|
|
|
|
# Paso 2: Incluir código genérico de postconfiguración.
|
|
|
|
if __name__ == "__main__":
|
|
main() |