#!/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 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 = '' disks = len (ogDiskToDev()) 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: 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' 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') # Crear el menú por defecto a partir del fichero generado (no dar ninguna salida). #subprocess.run ([f'{ogGlobals.OGSCRIPTS}/generateMenuDefault']) # Componer salida formateada. awk_script = r'''{ n=split($0,sep,";"); for (i=1; i