| 1 | #!/bin/bash |
|---|
| 2 | |
|---|
| 3 | #_______________________________________________________________________________________________________________________________ |
|---|
| 4 | # |
|---|
| 5 | # Formato de salida: |
|---|
| 6 | # 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 |
|---|
| 7 | #_______________________________________________________________________________________________________________________________ |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | # No registrar los errores. |
|---|
| 11 | export DEBUG="no" |
|---|
| 12 | |
|---|
| 13 | ser=$(ogGetSerialNumber) |
|---|
| 14 | cfg="" |
|---|
| 15 | disks=$(ogDiskToDev | wc -w) |
|---|
| 16 | for ((dsk=1; dsk<=$disks; dsk++)); do |
|---|
| 17 | particiones=$(ogGetPartitionsNumber $dsk) |
|---|
| 18 | particiones=${particiones:-0} |
|---|
| 19 | # Tipo de tabla de particiones: 1=MSDOS, 2=GPT |
|---|
| 20 | ptt=$(ogGetPartitionTableType $dsk) |
|---|
| 21 | case "$ptt" in |
|---|
| 22 | MSDOS) ptt=1 ;; |
|---|
| 23 | GPT) ptt=2 ;; |
|---|
| 24 | LVM) ptt=3 ;; |
|---|
| 25 | ZPOOL) ptt=4 ;; |
|---|
| 26 | *) ptt=0 ;; |
|---|
| 27 | esac |
|---|
| 28 | # Información de disco (partición 0) |
|---|
| 29 | cfg="$cfg$dsk:0:$ptt:::$(ogGetDiskSize $dsk):0;" |
|---|
| 30 | for ((par=1;par<=$particiones;par++)); do |
|---|
| 31 | # Código del identificador de tipo de partición |
|---|
| 32 | cod=$(ogGetPartitionId $dsk $par 2>/dev/null) |
|---|
| 33 | # Tipo del sistema de ficheros |
|---|
| 34 | fsi=$(getFsType $dsk $par 2>/dev/null) |
|---|
| 35 | fsi=${fsi:-"EMPTY"} |
|---|
| 36 | # Tamaño de la particón |
|---|
| 37 | tam=$(ogGetPartitionSize $dsk $par 2>/dev/null) |
|---|
| 38 | tam=${tam:-"0"} |
|---|
| 39 | # Sistema operativo instalado |
|---|
| 40 | case "$fsi" in |
|---|
| 41 | ""|EMPTY|LINUX-SWAP|LINUX-LVM|ZVOL) |
|---|
| 42 | soi=""; uso=0 ;; |
|---|
| 43 | *) if [ -n "$(ogMount $dsk $par 2>/dev/null)" ]; then |
|---|
| 44 | soi=$(getOsVersion $dsk $par 2>/dev/null | cut -f2 -d:) |
|---|
| 45 | # Hacer un 2º intento para algunos casos especiales. |
|---|
| 46 | [ -z "$soi" ] && soi=$(getOsVersion $dsk $par 2>/dev/null | cut -f2 -d:) |
|---|
| 47 | # Sistema de archivos para datos (sistema operativo "DATA") |
|---|
| 48 | [ -z "$soi" -a "$fsi" != "EMPTY" -a "$fsi" != "CACHE" ] && soi="DATA" |
|---|
| 49 | # Obtener porcentaje de uso. |
|---|
| 50 | uso=$(df $(ogGetMountPoint $dsk $par) | awk '{getline; printf "%d",$5}') |
|---|
| 51 | uso=${uso:0} |
|---|
| 52 | else |
|---|
| 53 | soi=""; uso=0 |
|---|
| 54 | fi |
|---|
| 55 | ;; |
|---|
| 56 | esac |
|---|
| 57 | cfg="$cfg$dsk:$par:$cod:$fsi:$soi:$tam:$uso;" |
|---|
| 58 | done |
|---|
| 59 | done |
|---|
| 60 | |
|---|
| 61 | # Crear configuración por defecto para cliente sin disco. |
|---|
| 62 | [ -z "$cfg" ] && cfg="1:0:0:::0;" |
|---|
| 63 | |
|---|
| 64 | # Guardar salida en fichero temporal. |
|---|
| 65 | cfgfile=/tmp/getconfig |
|---|
| 66 | echo "${ser:+$ser;}$cfg" > $cfgfile |
|---|
| 67 | |
|---|
| 68 | # Crear el menú por defecto a partir del fichero generado (no dar ninguna salida). |
|---|
| 69 | generateMenuDefault &>/dev/null |
|---|
| 70 | |
|---|
| 71 | # Componer salida formateada. |
|---|
| 72 | awk '{ n=split($0,sep,";"); |
|---|
| 73 | for (i=1; i<n; i++){ |
|---|
| 74 | c=split (sep[i],dua,":"); |
|---|
| 75 | if (i==1 && c==1) |
|---|
| 76 | printf ("ser=%s\n", dua[1]); |
|---|
| 77 | else |
|---|
| 78 | printf ("disk=%s\tpar=%s\tcpt=%s\tfsi=%s\tsoi=%s\ttam=%s\tuso=%s\n", |
|---|
| 79 | dua[1],dua[2],dua[3],dua[4],dua[5],dua[6],dua[7]); |
|---|
| 80 | } |
|---|
| 81 | }' $cfgfile |
|---|
| 82 | |
|---|
| 83 | # Borramos marcas de arranque de Windows |
|---|
| 84 | rm -f /mnt/*/ogboot.* /mnt/*/*/ogboot.* |
|---|
| 85 | |
|---|
| 86 | # Volver a registrar los errores. |
|---|
| 87 | unset DEBUG |
|---|
| 88 | |
|---|