Merge pull request 'refs #2206 give some care to the Custom scripts' (#59) from scripts-custom into main
ogclient/pipeline/head This commit looks good Details

Reviewed-on: #59
pull/60/head 0.16.0
Natalia Serrano 2025-06-12 15:46:59 +02:00
commit 461c5faed5
14 changed files with 139 additions and 385 deletions

View File

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.16.0] - 2025-06-12
### Changed
- Gave some care to the "Custom" scripts
## [0.15.3] - 2025-06-12
### Fixed

View File

@ -47,7 +47,7 @@ if not mount_out or not re.search (rf'{mntdir}.*\(rw', mount_out):
if shutil.which ('bootOsCustom.py'):
print ('[10] Configuración personalizada del inicio.')
subprocess.run ([f'{ogGlobals.OGSCRIPTS}/bootOsCustom.py'])
subprocess.run ([f'{ogGlobals.OGSCRIPTS}/bootOsCustom.py', disk, par])
print ('[70] Desmontar todos los sistemas de archivos.')
subprocess.run (['sync'])

View File

@ -1,92 +0,0 @@
#!/bin/bash
#/**
# bootOsCustom
#@brief Plantilla para script de configuración personalizada de sistema operativo restaurado.
#@param $1 nº de disco
#@param $2 nº de partición
#@warning Renombrar este fichero como "bootOsCustom" para personalizar el script estándar "bootOs".
#@note La partición a inicializar debe estar montada
#@version 1.1.1 Soporta varios discos
#@date 2019/08/26
#**/
# CONFIGURAR: Partición de datos de Windows que no queremos ocultar (valor por defecto '0' no oculta nada)
DISKDATA=0
PARTDATA=0
PROG="$(basename $0)"
# Control de errores
if [ $# -lt 2 ]; then
ogRaiseError $OG_ERR_FORMAT "Formato: $PROG ndisco nparticion"
exit $?
fi
# Parámetros obligatorios.
DISK="$1" # Nº de disco.
PART="$2" # Nº de partición.
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
DEVICE=$(ogDiskToDev "$DISK" "$PART") || exit $?
# Paso 1: Adaptar el código de ejemplo para arranque personalizado.
# Nota: el script "bootOs" llama al script "bootOsCustom" después de realizar la operaciones de inicio estándar y antes de desmontar las particiones e iniciar el sistema operativo.
MNTDIR=$(ogMount $DISK $PART) || exit $?
NAME="$(ogGetHostname)"
NAME=${NAME:-"pc"}
OSTYPE=$(ogGetOsType $DISK $PART)
case "$OSTYPE" in
Windows)
## Mostrar las particiones NTFS de sistema (dos opciones)
## Opción 1: SIN ocultar las demás.
#ogEcho log session "[40] Mostrar y activar particion de Windows $PART."
#[ $(ogGetPartitionType $DISK $PART) == "HNTFS" -o $(ogGetPartitionType $DISK $PART) == "WIN-RESERV" ] && ogUnhidePartition $DISK $PART
## Recorremos los distintos discos
#for DEVICE in $(ogDiskToDev); do
# d=$(ogDevToDisk $DEVICE)
# ## Mostrar las particiones NTFS de sistema (dos opciones)
# ## Opción 2: Ocultamos las demás.
# ogEcho log session "[40] Activar particion de Windows $PART y ocultar las demás."
# for (( i=1; i<=$(ogGetPartitionsNumber $d); i++ )); do
# if [ $d == $DISK -a $i == $PART ] || [ $d == $DISKDATA -a $i == $PARTDATA ]; then
# [ $(ogGetPartitionType $d $i) == "HNTFS" -o $(ogGetPartitionType $d $i) == "WIN-RESERV" ] && ogUnhidePartition $d $i
# else
# [ "$(ogGetPartitionType $d $i)" == NTFS -o "$(ogGetPartitionType $d $i)" == "WINDOWS" ] && ogHidePartition $d $i
# fi
# done
# ## Borrar marcas de arrranque de todos los Windows instalados en el disco.
# ogEcho log session "[30] Borrar marcas de arrranque de todos los Windows instalados en el disco."
# for (( i=1; i<=$(ogGetPartitionsNumber $d); i++ )); do
# [ "$(ogGetOsType $d $i)" == "Windows" ] && ogMount $d $i &>/dev/null
# done
# rm -f /mnt/*/ogboot.*
#done
;;
Linux)
## Modificar el nombre del equipo
#ogEcho log session "[30] Asignar nombre Linux \"$NAME\"."
#ETC=$(ogGetPath $DISK $PART /etc)
#[ -d "$ETC" ] && echo "$NAME" >$ETC/hostname 2>/dev/null
## Sustituir UUID o LABEL por su dispositivo en definición de sistema de archivo raíz.
#if [ -f "$ETC/fstab" ]; then
# ogEcho log session "[40] Actualizar fstab con particion raíz \"$PART\"."
# awk -v P="$PART " '{ if ($2=="/" && $1!~/^#/) {sub(/^.*$/, P, $1)}
# print }' $ETC/fstab >/tmp/fstab
# mv /tmp/fstab $ETC/fstab
#fi
## Cambiar claves usuarios, copiando fichero /etc/passwd
## En el servidor el nuevo fichero debe situarse en el directorio del grupo:
## /opt/opengnsys/images/groups/nombre_aula
#if [ -r $(ogGetGroupDir)/passwd ]; then
# ogEcho log session "[65] Cambiar claves de usuarios."
# cp $(ogGetGroupDir)/passwd $MNTDIR/etc
#fi
;;
esac

View File

@ -0,0 +1,43 @@
#!/usr/bin/python3
#/**
# bootOsCustomTemplate.py
#@brief Plantilla para script de configuración personalizada de sistema operativo restaurado.
#@param $1 nº de disco
#@param $2 nº de partición
#@warning Renombrar este fichero como "bootOsCustom.py" para personalizar el script estándar "bootOs.py".
#@note La partición a inicializar debe estar montada
#**/
import sys
import ogGlobals
from SystemLib import ogRaiseError, ogEcho
from DiskLib import ogDiskToDev
from FileSystemLib import ogMount
from NetLib import ogGetHostname
from InventoryLib import ogGetOsType
prog = sys.argv[0]
# Control de errores
if len (sys.argv) < 3:
ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'Formato: {prog} ndisco nfilesys')
sys.exit (1)
disk, par = sys.argv[1:]
device = ogDiskToDev (disk, par)
if not device: sys.exit (1)
# Nota: el script "bootOs.py" llama al script "bootOsCustom.py" después de realizar la operaciones de inicio estándar y antes de desmontar las particiones e iniciar el sistema operativo.
mntdir = ogMount (disk, par)
if not mntdir: sys.exit (1)
name = ogGetHostname()
if not name: name = 'pc'
ostype = ogGetOsType (disk, par)
if 'Windows' == ostype:
pass
elif 'Linux' == ostype:
pass

View File

@ -1,78 +0,0 @@
import sys
import subprocess
#!/usr/bin/env python3
"""
configureOsCustom
@brief Plantilla para script de configuración personalizada de sistema operativo restaurado.
@param $1 de disco
@param $2 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()

View File

@ -31,9 +31,8 @@ import FileLib
## [ -f $DEVICECFG ] && source $DEVICECFG
## pero luego no utiliza ninguna de las variables definidas en el archivo...
disk = sys.argv[1]
par = sys.argv[2]
imgname = sys.argv[3]
disk, par, *other = sys.argv[1:]
imgname = other[0] if len (other) > 0 else ''
# Si el sistema de archivos no esta extendido, ampliarlo al tamaño de su partición.
partsize = DiskLib.ogGetPartitionSize (disk, par)

View File

@ -1,81 +0,0 @@
#!/bin/bash
#/**
# configureOsCustom
#@brief Plantilla para scirpt de configuracion 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.
#**/
# Control de parámetros.
[ $# -eq 2 -o $# -eq 4 ] || ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: configureOsCustom int_ndisc int_npart [str_repo str_imgname]" || exit $?
# Parámetros obligatorios.
DISK="$1" # Nº de disco.
PART="$2" # Nº de partición.
# Parámetros opcionales.
REPO="${3^^}" # Repositorio (en mayúsculas).
IMGNAME="$4" # Nombre canónico de imagen (sin extensión).
# 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.
# Nota: incluye llamada al script "configureOs" para realizar previamente una configuración estándar.
# Configurarción típica.
configureOs "$1" "$2"
# Postconfiguración personalizada para cada tipo de sistema operativo.
OSTYPE="$(ogGetOsType $1 $2)"
case "$OSTYPE" in
Windows) # Postconfiguración de Windows.
# Descomentar la siguiente línea para cambiar usuario de inicio.
#ogSetWinlogonUser $1 $2 " "
# OPCIONAL: desactivar el chkdisk de windows tras la restauracion. Requiere configuracion previa en el engine.cfg
#ogLoadHiveWindows $1 $2; ogSetWindowsChkdisk $OGWINCHKDISK; ogUpdateHiveWindows
;;
Linux) # Postconfiguración de GNU/Linux.
##OPCIONAL Para UEFI: cambia el UUID de la partición (para tener dos linux en un equipo)
#ogUuidChange $DISK $PART
##OPCIONAL Limpiar dispositivos reconocidos previamente
#ogCleanLinuxDevices $1 $2
## Instala (no configura) el codigo de arranque del Grub en la partición (no lo configura, se mantiene el original de la imagen)
#ogGrubInstallPartition $1 $2
## OPCIONAL: instala y configura el codigo de arranque del Grub en el MBR (no lo configura, se mantiene el original de la imagen)
#ogGrubInstallMbr $1 $2
## OPCIONAL: Instala y configura el Grub en el MBR y lo autoconfigura, entradas para los sitemas operativos, ademas al linux restaurado le añade los parmetros indicados.
#ogGrubInstallMbr $1 $2 TRUE "irqpoll pci=noacpi noresume quiet splash"
;;
MacOS) # Postconfiguración de Mac OS X.
# Programa de inicio que será ejecutado en el arranque de Mac OS X.
# NOTA: no modificar la línea siguiente.
cat << EOT | sed -n -e '/rm -f /r /dev/stdin' -e 1x -e '2,${x;p}' -e '${x;p}' $MNTDIR/var/root/postconfd.sh
### 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'
EOT
# NOTA: no modificar la línea anterior.
;;
esac
# Paso 2: Incluir código genérico de postconfiguración.

View File

@ -0,0 +1,38 @@
#!/usr/bin/python3
#/**
# configureOsCustom
#@brief Plantilla para scirpt de configuracion 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.
#**/
import sys
import subprocess
import ogGlobals
from SystemLib import ogRaiseError, ogEcho
from InventoryLib import ogGetOsType
prog = sys.argv[0]
if len (sys.argv) not in [3, 5]:
ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'{ogGlobals.lang.MSG_FORMAT} configureOsCustom int_ndisc int_npart [str_repo str_imgname]')
sys.exit (1)
disk, par, *other = sys.argv[1:]
repo = other[0].upper() if len (other) > 0 else ''
imgname = other[1] if len (other) > 1 else ''
# Nota: incluye llamada al script "configureOs" para realizar previamente una configuración estándar.
subprocess.run ([f'configureOs.py', disk, par, imgname])
ostype = ogGetOsType (disk, par)
if 'Windows' == ostype:
pass
elif 'Linux' == ostype:
pass
elif 'MacOS' == ostype:
pass

View File

@ -63,7 +63,7 @@ def main (disk, par, repo, imgname):
# Clear temporary file used as log track by httpdlog
# Limpia los ficheros temporales usados como log de seguimiento para httpdlog
# salvo si es llamado desde createImageCustom
if 'createImageCustom' != SystemLib.ogGetCaller():
if 'createImageCustom.py' != SystemLib.ogGetCaller():
with open (ogGlobals.OGLOGSESSION, 'w') as fd: fd.write ('')
with open (ogGlobals.OGLOGCOMMAND, 'w') as fd: fd.write ('')
with open (f'{ogGlobals.OGLOGCOMMAND}.tmp', 'w') as fd: fd.write ('')

View File

@ -1,35 +0,0 @@
#!/bin/bash
#/**
# createImageCustom
#@brief Plantilla para scirpt de creación personalizada de imagen.
#@param $1 nº de disco
#@param $2 nº de partición
#@param $3 Repositorio: CACHE, REPO o dirección IP
#@param $4 Nombre canónico de la imagen sin extensión
#@warning Renombrar este fichero como "createImageCustom" para sustituir al script estándar "createImage".
#**/
# Control de parámetros.
[ $# -eq 4 ] || ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: createImageCustom int_ndisc int_npart str_repo str_imgname" || exit $?
# Toma de parámetros.
DISK="$1" # Nº de disco.
PART="$2" # Nº de partición.
REPO="${3^^}" # Repositorio (en mayúsculas).
IMGNAME="$4" # Nombre canónico de imagen (sin extensión).
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
# Paso 1: Añadir aquí el código para el proceso previo antes de la creación de la imagen en el equipo modelo (opcional).
# Paso 2: Sustituir, si se desea, la llamada al proceso estándar de creación de imagen por código personalizado.
createImage "$@"
# Paso 3: Añadir aquí el código para el proceso posterior tras la creación de la imagen (opcional).

View File

@ -1,27 +1,25 @@
#!/usr/bin/python3
#/**
# createImageCustom
#@brief Plantilla para scirpt de creación personalizada de imagen.
#@param $1 nº de disco
#@param $2 nº de partición
#@param $3 Repositorio: CACHE, REPO o dirección IP
#@param $4 Nombre canónico de la imagen sin extensión
#@warning Renombrar este fichero como "createImageCustom" para sustituir al script estándar "createImage".
#**/
import sys
import os
import subprocess
#!/usr/bin/env python3
import ogGlobals
from SystemLib import ogRaiseError
def main():
# Control de parámetros.
if len (sys.argv) != 5:
ogRaiseError(os.getenv('OG_ERR_FORMAT', 1), "createImageCustom int_ndisc int_npart str_repo str_imgname")
ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'{ogGlobals.lang.MSG_FORMAT} createImageCustom int_ndisc int_npart str_repo str_imgname')
sys.exit (1)
disk, par, repo, imgname = sys.argv[1:]
repo = repo.upper()
# Toma de parámetros.
DISK = sys.argv[1] # Nº de disco.
PART = sys.argv[2] # Nº de partición.
REPO = sys.argv[3].upper() # Repositorio (en mayúsculas).
IMGNAME = sys.argv[4] # Nombre canónico de imagen (sin extensión).
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
# Paso 1: Añadir aquí el código para el proceso previo antes de la creación de la imagen en el equipo modelo (opcional).
# Paso 2: Sustituir, si se desea, la llamada al proceso estándar de creación de imagen por código personalizado.
createImage(DISK, PART, REPO, IMGNAME)
# Paso 3: Añadir aquí el código para el proceso posterior tras la creación de la imagen (opcional).
if __name__ == "__main__":
main()
subprocess.run (['createImage.py', disk, par, repo, imgname])

View File

@ -138,9 +138,9 @@ def main (repo, imgname, disk, par, proto='UNICAST', protoopt=''):
params = [repo, imgname, disk, par, proto, protoopt]
# Si existe, ejecuta script personalizado "restoreImageCustom"; si no, llama al genérico "restoreImage".
if shutil.which ('restoreImageCustom'):
if shutil.which ('restoreImageCustom.py'):
SystemLib.ogEcho (['log', 'session'], None, f'[55] {ogGlobals.lang.MSG_HELP_ogRestoreImage}: restoreImageCustom {params}')
retval = subprocess.run (['restoreImageCustom'] + params).returncode
retval = subprocess.run (['restoreImageCustom.py'] + params).returncode
else:
SystemLib.ogEcho (['log', 'session'], None, f'[55] {ogGlobals.lang.MSG_HELP_ogRestoreImage}: restoreImage {params}')
retval = subprocess.run (['restoreImage.py'] + params).returncode
@ -160,9 +160,9 @@ def main (repo, imgname, disk, par, proto='UNICAST', protoopt=''):
SystemLib.ogEcho (['log', 'session'], None, f' [ ] {ogGlobals.lang.MSG_SCRIPTS_TIME_PARTIAL} : {int (time3/60)}m {int (time3%60)}s')
# Si existe, ejecuta script personalizado de postconfiguración "configureOsCustom"; si no, llama al genérico "configureOs".
if shutil.which ('configureOsCustom'):
if shutil.which ('configureOsCustom.py'):
SystemLib.ogEcho (['log', 'session'], None, '[90] configureOsCustom')
subprocess.run (['configureOsCustom', disk, par, repo, imgname])
subprocess.run (['configureOsCustom.py', disk, par, repo, imgname])
else:
SystemLib.ogEcho (['log', 'session'], None, f'[90] {ogGlobals.lang.MSG_SCRIPTS_OS_CONFIGURE}')
subprocess.run (['configureOs.py', disk, par, imgname])

View File

@ -1,37 +0,0 @@
#!/bin/bash
#/**
# restoreImageCustom
#@brief Plantilla para scirpt de rastauración personalizada de imagen.
#@param $1 nº de disco
#@param $2 nº de partición
#@param $3 Repositorio: CACHE, REPO o dirección IP
#@param $4 Nombre canónico de la imagen sin extensión
#@warning Renombrar este fichero como "restoreImageCustom" para sustituir al script estándar "restoreImage".
#**/
# Control de parámetros.
[ $# -ge 4 -a $# -le 6 ] || ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: restoreImageCustom str_repo str_imagen int_ndisco int_npart [ str_proto [\"str_opciones\"] ]" || exit $?
# Toma de parámetros.
REPO="${1^^}" # Repositorio (en mayúsculas).
IMGNAME="$2" # Nombre canónico de imagen (sin extensión).
DISK="$3" # Nº de disco.
PART="$4" # Nº de partición.
PROTO="${5^^}" # Protocolo de comunicaciones (por defecto, UNICAST).
PROTO=${PROTO:-"UNICAST"}
PROTOOPT="$6" # Opciones del protocolo separadas por ":" (opcional).
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
# Paso 1: Añadir aquí el código para el proceso previo antes de la restauración de la imagen en los equipos (opcional).
# Paso 2: Sustituir, si se desea, la llamada al proceso estándar de restauración de imagen por código personalizado.
restoreImage "$@"
# Aviso: editar la plantilla "configureOsCustom" para añadir el código personalizado para el proceso de postconfiguración de los clientes (no incluir aquí dicho código).

View File

@ -1,35 +1,28 @@
import sys
import os
import SystemLib
#!/usr/bin/python3
#/**
# restoreImageCustom
#@brief Plantilla para scirpt de rastauración personalizada de imagen.
#@param $1 nº de disco
#@param $2 nº de partición
#@param $3 Repositorio: CACHE, REPO o dirección IP
#@param $4 Nombre canónico de la imagen sin extensión
#@warning Renombrar este fichero como "restoreImageCustom" para sustituir al script estándar "restoreImage".
#**/
#!/usr/bin/env python3
"""
restoreImageCustom
@brief Plantilla para script de restauración personalizada de imagen.
@param $1 de disco
@param $2 de partición
@param $3 Repositorio: CACHE, REPO o dirección IP
@param $4 Nombre canónico de la imagen sin extensión
@warning Renombrar este fichero como "restoreImageCustom" para sustituir al script estándar "restoreImage".
"""
import sys
import subprocess
import ogGlobals
from SystemLib import ogRaiseError
# Control de parámetros.
if not (4 <= len(sys.argv) <= 6):
SystemLib.ogRaiseError(os.getenv('OG_ERR_FORMAT'), "restoreImageCustom str_repo str_imagen int_ndisco int_npart [ str_proto [\"str_opciones\"] ]")
if len (sys.argv) < 5 or len (sys.argv) > 7):
ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'restoreImageCustom str_repo str_imagen int_ndisco int_npart [ str_proto ["str_opciones"] ]')
sys.exit (1)
# Toma de parámetros.
REPO = sys.argv[1].upper() # Repositorio (en mayúsculas).
IMGNAME = sys.argv[2] # Nombre canónico de imagen (sin extensión).
DISK = sys.argv[3] # Nº de disco.
PART = sys.argv[4] # Nº de partición.
PROTO = sys.argv[5].upper() if len(sys.argv) > 5 else "UNICAST" # Protocolo de comunicaciones (por defecto, UNICAST).
PROTOOPT = sys.argv[6] if len(sys.argv) > 6 else "" # Opciones del protocolo separadas por ":" (opcional).
repo, imgname, disk, par, *other = sys.argv[1:]
repo = repo.upper()
proto = other[0].upper() if len (other) > 0 else 'UNICAST'
protoopt = other[1] if len (other) > 1 else ''
# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
# Paso 1: Añadir aquí el código para el proceso previo antes de la restauración de la imagen en los equipos (opcional).
# Paso 2: Sustituir, si se desea, la llamada al proceso estándar de restauración de imagen por código personalizado.
restoreImage(*sys.argv[1:])
# Aviso: editar la plantilla "configureOsCustom" para añadir el código personalizado para el proceso de postconfiguración de los clientes (no incluir aquí dicho código).
subprocess.run (['restoreImage.py', repo, imgname, disk, par, proto, protoopt])