From 21770526e5a75519b95001afb67dabe013fa8477 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Fri, 21 Mar 2025 13:59:17 +0100 Subject: [PATCH] refs #1735 collect firmware type --- ogclient/interfaceAdm/getConfiguration.py | 140 +++++++++------------- 1 file changed, 56 insertions(+), 84 deletions(-) diff --git a/ogclient/interfaceAdm/getConfiguration.py b/ogclient/interfaceAdm/getConfiguration.py index b51d2e9..960fe7a 100755 --- a/ogclient/interfaceAdm/getConfiguration.py +++ b/ogclient/interfaceAdm/getConfiguration.py @@ -1,105 +1,77 @@ #!/usr/bin/python3 -#_______________________________________________________________________________________________________________________________ -# -# Formato de salida: -# disk=Número de disco\tpar=Número de particion\tcod=Código de partición\tsfi=Sistema de ficheros\tsoi=Sistema instalado\ttam=Tamaño de la partición\n -#_______________________________________________________________________________________________________________________________ - import os import glob import subprocess -from InventoryLib import ogGetSerialNumber, ogGetOsVersion +from InventoryLib import ogGetSerialNumber, ogGetOsVersion, ogIsEfiActive from DiskLib import ogDiskToDev, ogGetPartitionsNumber, ogGetPartitionTableType, ogGetDiskSize, ogGetPartitionId, ogGetPartitionSize from FileSystemLib import ogMount, ogGetMountPoint, ogGetFsType -# No registrar los errores. -#os.environ['DEBUG'] = 'no' - ser = ogGetSerialNumber() -cfg = '' +fwt = 'UEFI' if ogIsEfiActive() else 'BIOS' +print (f'ser={ser}\nfwt={fwt}') + disks = len (ogDiskToDev()) +if disks: + for dsk in range (1, disks+1): + # Tipo de tabla de particiones: 1=MSDOS, 2=GPT + ptt = ogGetPartitionTableType (dsk) + ptt_map = { + 'MSDOS': 1, + 'GPT': 2, + 'LVM': 3, + 'ZPOOL': 4, + } + ptt = ptt_map.get (ptt, 0) -for dsk in range (1, disks+1): - particiones = ogGetPartitionsNumber (dsk) - particiones = int (particiones) if particiones else 0 - # Tipo de tabla de particiones: 1=MSDOS, 2=GPT - ptt = ogGetPartitionTableType (dsk) - ptt_map = { - 'MSDOS': 1, - 'GPT': 2, - 'LVM': 3, - 'ZPOOL': 4, - } - ptt = ptt_map.get (ptt, 0) - # Información de disco (partición 0) - s = ogGetDiskSize (dsk) - cfg += f'{dsk}:0:{ptt}:::{s}:0;' - for par in range (1, particiones+1): - # Código del identificador de tipo de partición - cod = ogGetPartitionId (dsk, par) - # Tipo del sistema de ficheros - fsi = ogGetFsType (dsk, par) - if not fsi: fsi = 'EMPTY' - # Tamaño de la particón - tam = ogGetPartitionSize (dsk, par) - if not tam: tam = '0' - # Sistema operativo instalado - soi = '' - uso = '0' - if fsi not in ['', 'EMPTY', 'LINUX-SWAP', 'LINUX-LVM', 'ZVOL']: - if ogMount (dsk, par): - soi = ogGetOsVersion (dsk, par) - # Hacer un 2º intento para algunos casos especiales. - if not soi: + # Información de disco (partición 0) + s = ogGetDiskSize (dsk) + print (f'disk={dsk}\tpar=0\tcpt={ptt}\tfsi=\tsoi=\ttam={s}\tuso=0') + + particiones = ogGetPartitionsNumber (dsk) + particiones = int (particiones) if particiones else 0 + for par in range (1, particiones+1): + # Código del identificador de tipo de partición + cod = ogGetPartitionId (dsk, par) + + # Tipo del sistema de ficheros + fsi = ogGetFsType (dsk, par) + if not fsi: fsi = 'EMPTY' + + # Tamaño de la particón + tam = ogGetPartitionSize (dsk, par) + if not tam: tam = '0' + + # Sistema operativo instalado y porcentaje de uso + soi = '' + uso = '0' + if fsi not in ['', 'EMPTY', 'LINUX-SWAP', 'LINUX-LVM', 'ZVOL']: + if ogMount (dsk, par): soi = ogGetOsVersion (dsk, par) - if not soi: soi = '' - if soi: soi = soi.split (':')[1] - # Sistema de archivos para datos (sistema operativo "DATA") - if not soi and fsi not in ['EMPTY', 'CACHE']: - soi = 'DATA' - # Obtener porcentaje de uso. - mntpt = ogGetMountPoint (dsk, par) - uso = subprocess.run (['df', mntpt], capture_output=True, text=True).stdout.splitlines()[-1].split()[4].replace ('%', '') - if not uso: uso = '0' - else: - soi = '' - uso = '0' + # Hacer un 2º intento para algunos casos especiales. + if not soi: + soi = ogGetOsVersion (dsk, par) + if not soi: soi = '' + if soi: soi = soi.split (':')[1] + # Sistema de archivos para datos (sistema operativo "DATA") + if not soi and fsi not in ['EMPTY', 'CACHE']: + soi = 'DATA' + mntpt = ogGetMountPoint (dsk, par) + uso = subprocess.run (['df', mntpt], capture_output=True, text=True).stdout.splitlines()[-1].split()[4].replace ('%', '') + if not uso: uso = '0' + else: + soi = '' + uso = '0' - cfg += f'{dsk}:{par}:{cod}:{fsi}:{soi}:{tam}:{uso};' - -# Crear configuración por defecto para cliente sin disco. -if not cfg: - cfg = '1:0:0:::0;' - -# Guardar salida en fichero temporal. -cfgfile = '/tmp/getconfig' -with open (cfgfile, 'w') as f: - if ser: f.write (f'{ser};\n') - f.write (cfg + '\n') + print (f'disk={dsk}\tpar={par}\tcpt={cod}\tfsi={fsi}\tsoi={soi}\ttam={tam}\tuso={uso}') +else: + print ('disk=1\tpar=0\tcpt=0\tfsi=\tsoi=\ttam=0\tuso=0') # Crear el menú por defecto a partir del fichero generado (no dar ninguna salida). +# requiere /tmp/getconfig pero este script ya no lo crea #subprocess.run ([f'{ogGlobals.OGSCRIPTS}/generateMenuDefault']) -# Componer salida formateada. -awk_script = r'''{ n=split($0,sep,";"); - for (i=1; i