150 lines
5.9 KiB
Python
150 lines
5.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Este script renombra la imagen especificada como primer parámetro (y todos sus archivos asociados), asignando el nombre especificado como segundo parámetro.
|
|
|
|
Una vez renombrados los archivos, llama al script "updateRepoInfo.py", para actualizar la información del repositorio.
|
|
|
|
Parámetros
|
|
------------
|
|
sys.argv[1] - Nombre de la imagen a renombrar (sin extensión y sin ruta).
|
|
- Ejemplo1: Ubuntu24
|
|
- Ejemplo2: Windows10
|
|
|
|
sys.argv[2] - Nuevo nombre a asignar a la imagen (sin extensión y sin ruta).
|
|
- Ejemplo1: Ubuntu24_BKP
|
|
- Ejemplo2: Windows10_BKP
|
|
|
|
Sintaxis
|
|
----------
|
|
./renameImage.py image_to_rename image_new_name
|
|
|
|
Ejemplos
|
|
---------
|
|
./renameImage.py Ubuntu24 Ubuntu24_BKP
|
|
./renameImage.py Windows10 Windows10_BKP
|
|
"""
|
|
|
|
# --------------------------------------------------------------------------------------------
|
|
# IMPORTS
|
|
# --------------------------------------------------------------------------------------------
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
from systemd import journal
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------
|
|
# VARIABLES
|
|
# --------------------------------------------------------------------------------------------
|
|
|
|
script_name = os.path.basename(__file__)
|
|
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
|
|
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------
|
|
# FUNCTIONS
|
|
# --------------------------------------------------------------------------------------------
|
|
|
|
|
|
def show_help():
|
|
""" Imprime la ayuda, cuando se ejecuta el script con el parámetro "help".
|
|
"""
|
|
help_text = f"""
|
|
Sintaxis: {script_name} image_to_rename image_new_name
|
|
Ejemplo1: {script_name} Ubuntu24 Ubuntu24_BKP
|
|
Ejemplo2: {script_name} Windows10 Windows10_BKP
|
|
"""
|
|
print(help_text)
|
|
|
|
|
|
|
|
def check_params():
|
|
""" Comprueba que se haya enviado la cantidad correcta de parámetros, y en el formato correcto.
|
|
Si no es así, muestra un mensaje de error, y sale del script.
|
|
LLama a la función "show_help" cuando se ejecuta el script con el parámetro "help".
|
|
"""
|
|
# Si se ejecuta el script con el parámetro "help", se muestra la ayuda, y se sale del script:
|
|
if len(sys.argv) == 2 and sys.argv[1] == "help":
|
|
show_help()
|
|
sys.exit(0)
|
|
# Si se ejecuta el script con más o menos de 2 parámetros, se muestra un error y la ayuda, y se sale del script:
|
|
elif len(sys.argv) != 3:
|
|
print(f"{script_name} Error: Formato incorrecto: Se debe especificar 2 parámetros")
|
|
show_help()
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
def rename_image(image_original_name, image_new_name):
|
|
""" Asigna el nuevo nombre especificado a la imagen y a todos los archivos asociados.
|
|
Al archivo ".info.checked" también le cambia la extensión a ".info",
|
|
para poder actualizar la información del repositorio posteriormente.
|
|
"""
|
|
try:
|
|
journal.send("renameImage.py: Renaming image files...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
|
|
|
# Creamos una lista con las extensiones de los archivos de la imagen (menos "info.checked"):
|
|
extensions = ['.img', '.img.full.sum', '.img.size', '.img.sum', '.img.torrent']
|
|
|
|
# Renombramos cada uno de los archivos (menos "info.checked"):
|
|
for ext in extensions:
|
|
os.rename(f"{repo_path}{image_original_name}{ext}", f"{repo_path}{image_new_name}{ext}")
|
|
|
|
# Renombramos separadamente el archivo "info.checked" (porque también le cambiamos la extensión a "info"):
|
|
os.rename(f"{repo_path}{image_original_name}.img.info.checked", f"{repo_path}{image_new_name}.img.info")
|
|
|
|
except Exception as error:
|
|
journal.send(f"renameImage.py: Rename Image exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
|
sys.exit(2)
|
|
|
|
|
|
|
|
def update_repo_info():
|
|
""" Actualiza la información del repositorio, ejecutando el script "updateRepoInfo.py".
|
|
"""
|
|
try:
|
|
journal.send("renameImage.py: Running script 'updateRepoInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
|
result = subprocess.run(['python3', update_repo_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
except subprocess.CalledProcessError as error:
|
|
journal.send(f"renameImage.py: 'updateRepoInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
|
sys.exit(3)
|
|
except Exception as error:
|
|
journal.send(f"renameImage.py: 'updateRepoInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
|
sys.exit(4)
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------
|
|
# MAIN
|
|
# --------------------------------------------------------------------------------------------
|
|
|
|
|
|
def main():
|
|
"""
|
|
"""
|
|
# Evaluamos si se ha enviado la cantidad correcta de parámetros, y en el formato correcto:
|
|
check_params()
|
|
|
|
# Almacenamos el nombre original de la imagen, y el nuevo nombre a asignar (desde los parámetros):
|
|
image_original_name = sys.argv[1]
|
|
image_new_name = sys.argv[2]
|
|
|
|
# Renombramos la imagen y sus archivos asociados:
|
|
rename_image(image_original_name, image_new_name)
|
|
|
|
# Actualizamos la información del repositorio, ejecutando el script "updateRepoInfo.py":
|
|
update_repo_info()
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# --------------------------------------------------------------------------------------------
|