[3ec149c] | 1 | #!/bin/bash |
---|
| 2 | |
---|
[e034672] | 3 | |
---|
| 4 | #Load engine configurator from engine.cfg file. |
---|
| 5 | #Carga el configurador del engine desde el fichero engine.cfg |
---|
| 6 | [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg |
---|
| 7 | |
---|
| 8 | # Clear temporary file used as log track by httpdlog |
---|
| 9 | # Limpia los ficheros temporales usados como log de seguimieincludento para httpdlog |
---|
| 10 | echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp |
---|
| 11 | |
---|
| 12 | # Registro de inicio de ejecución |
---|
[0483b14] | 13 | ogEcho log session "$MSG_INTERFACE_START $0 $*" |
---|
[314dafb] | 14 | |
---|
[d7fe54a] | 15 | # Solo ejecutable por OpenGnsys Client. |
---|
[e034672] | 16 | PATH=$PATH:$(dirname $0) |
---|
| 17 | PROG=$(basename $0) |
---|
| 18 | |
---|
| 19 | #____________________________________________________________________ |
---|
[3ec149c] | 20 | # |
---|
[e034672] | 21 | # El parámetro $2 es el que aporta toda la información y el $1 se queda obsoleto |
---|
[3ec149c] | 22 | # Formato de entrada: |
---|
[e034672] | 23 | # dis=Número de disco |
---|
[314dafb] | 24 | # *=caracter de separación |
---|
[e034672] | 25 | # che=Vale 0 o 1 |
---|
[314dafb] | 26 | # *=caracter de separación |
---|
[e034672] | 27 | # $tch=tamaño cache |
---|
[314dafb] | 28 | # != caracter de separación |
---|
[e034672] | 29 | # |
---|
| 30 | # Y un numero indeterminado de cadenas del tipo siguuenteseparadas por el caracter '$': |
---|
[314dafb] | 31 | # par=Número de particion*cod=Código de partición*sfi=Sistema de ficheros*tam=Tamaño de la partición*ope=Operación |
---|
| 32 | # @= caracter de separación |
---|
[e034672] | 33 | #____________________________________________________________________ |
---|
[3ec149c] | 34 | |
---|
[314dafb] | 35 | # Captura de parámetros (se ignora el 1er parámetro y se eliminan espacios y tabuladores). |
---|
| 36 | #param='dis=1*che=0*tch=70000000!par=1*cpt=NTFS*sfi=NTFS*tam=11000000*ope=0%' |
---|
| 37 | shift |
---|
| 38 | param="$(echo $* | sed 's/[ ]//g')" |
---|
[3997593] | 39 | |
---|
| 40 | # Activa navegador para ver progreso |
---|
[e034672] | 41 | coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh |
---|
[3997593] | 42 | |
---|
[314dafb] | 43 | # Leer los dos bloques de parámetros, separados por '!'. |
---|
[e034672] | 44 | declare -a TBPRM |
---|
[3997593] | 45 | |
---|
[314dafb] | 46 | IFS='!' read -a TBPRM <<<"$param" |
---|
| 47 | pparam="${TBPRM[0]}" # Parámetros generales del disco. |
---|
| 48 | sparam="${TBPRM[1]}" # Parámetros de particionado y formateo. |
---|
| 49 | |
---|
| 50 | |
---|
| 51 | # Toma valores de disco y caché, separados por "*". |
---|
| 52 | # Los valores están en las variables $dis: disco, $che: existe cache (1, 0), $tch: Tamaño de la cache. |
---|
| 53 | unset TBPRM |
---|
| 54 | IFS='*' read -a TBPRM <<<"$pparam" |
---|
| 55 | [[ ${TBPRM} =~ = ]] && eval ${TBPRM[@]} # Comprobar asignación antes de exportar valores. |
---|
| 56 | |
---|
| 57 | # Error si no se define el parámetro de disco (dis). |
---|
| 58 | [ -z "$dis" ] && exit $OG_ERR_FORMAT |
---|
| 59 | |
---|
| 60 | # Toma valores de distribución de particiones, separados por "%". |
---|
| 61 | declare -a CFG # Valores de configuración. |
---|
| 62 | declare -a TBP # Tabla de particionado. |
---|
| 63 | declare -a TBF # Tabla de formateo. |
---|
| 64 | |
---|
| 65 | unset TBPRM |
---|
| 66 | IFS='%' read -a TBPRM <<<"$sparam" |
---|
| 67 | |
---|
| 68 | maxp=0 |
---|
| 69 | for ((i=0; i<${#TBPRM[@]}; i++)); do |
---|
[1a2fa9d8] | 70 | # Leer datos de la partición, separados por "*". |
---|
| 71 | unset par |
---|
| 72 | IFS='*' read -a CFG <<<"${TBPRM[i]}" 2>/dev/null |
---|
| 73 | [[ ${CFG} =~ = ]] && eval ${CFG[@]} # Comprobar asignación antes de exportar valores. |
---|
| 74 | # Componer datos de particionado. |
---|
| 75 | if [ "$cpt" != "CACHE" ]; then |
---|
| 76 | TBP[par]="$cpt:$tam" |
---|
| 77 | fi |
---|
| 78 | # Si se activa operación de formatear, componer datos de formateo. |
---|
| 79 | if [ "$ope" == 1 ]; then |
---|
| 80 | # Comprobamos que la particion y el s.f sean validos. |
---|
[a616248] | 81 | ogCheckStringInGroup $cpt "EMPTY EXTENDED LINUX-LVM LVM ZPOOL" |
---|
[1a2fa9d8] | 82 | [ $? -ne 0 ] && TBF[par]="$sfi" |
---|
| 83 | fi |
---|
| 84 | # Obtener la partición mayor. |
---|
| 85 | [ $par -gt $maxp ] && maxp=$par |
---|
[314dafb] | 86 | done |
---|
[e034672] | 87 | #____________________________________________________ |
---|
| 88 | # |
---|
| 89 | # Proceso |
---|
| 90 | #____________________________________________________ |
---|
| 91 | |
---|
[1a2fa9d8] | 92 | # Tamaño actual de la cache |
---|
| 93 | CACHESIZE=$(ogGetCacheSize) |
---|
[3997593] | 94 | |
---|
| 95 | # Desmonta todas las particiones y la caché |
---|
[1a2fa9d8] | 96 | |
---|
| 97 | ogEcho session log "[10] $MSG_HELP_ogUnmountAll" |
---|
[314dafb] | 98 | ogUnmountAll $dis &>/dev/null |
---|
[1a2fa9d8] | 99 | ogUnmountCache |
---|
[e034672] | 100 | |
---|
| 101 | # Elimina la tabla de particiones |
---|
[1a2fa9d8] | 102 | ogDeletePartitionTable $dis |
---|
| 103 | ogExecAndLog COMMAND ogUpdatePartitionTable $dis |
---|
[e034672] | 104 | |
---|
[314dafb] | 105 | # Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT). |
---|
[1a2fa9d8] | 106 | ogCreatePartitionTable $dis MSDOS |
---|
[e034672] | 107 | |
---|
[1a2fa9d8] | 108 | # Inicia la cache. |
---|
| 109 | if echo "$sparam" |grep "CACHE" >/dev/null; then |
---|
| 110 | ogEcho session log "[30] $MSG_HELP_ogCreateCache" |
---|
[4c4ea595] | 111 | ogEcho session log " initCache $dis $tch" |
---|
| 112 | ogExecAndLog COMMAND initCache $dis $tch |
---|
[e04f987] | 113 | fi |
---|
| 114 | |
---|
| 115 | # Definir particionado. |
---|
[1a2fa9d8] | 116 | ogEcho session log "[50] $MSG_HELP_ogCreatePartitions" |
---|
| 117 | ogEcho session log " ogCreatePartitions $dis ${TBP[@]}" |
---|
| 118 | ogExecAndLog COMMAND ogCreatePartitions $dis ${TBP[@]} |
---|
| 119 | if [ $? -ne 0 ]; then |
---|
| 120 | kill $COPROC_PID |
---|
| 121 | exit $(ogRaiseError session log $OG_ERR_GENERIC "ogCreatePartitions $dis ${TBP[@]}") |
---|
| 122 | fi |
---|
| 123 | ogExecAndLog COMMAND ogUpdatePartitionTable $dis |
---|
[314dafb] | 124 | |
---|
[1a2fa9d8] | 125 | # Formatear particiones |
---|
| 126 | ogEcho session log "[70] $MSG_HELP_ogFormat" |
---|
[314dafb] | 127 | |
---|
| 128 | for ((par=1; par<=$maxp; par++)); do |
---|
[1a2fa9d8] | 129 | case "${TBF[par]}" in |
---|
| 130 | CACHE) # Si el tamaño es distinto ya se ha formateado. |
---|
| 131 | if [ "$CACHESIZE" == $tch ]; then |
---|
| 132 | ogEcho session log " ogFormatCache" |
---|
| 133 | ogExecAndLog COMMAND ogFormatCache |
---|
| 134 | fi |
---|
| 135 | ;; |
---|
| 136 | "") ;; |
---|
| 137 | *) ogEcho session log " ogFormatFs $dis $par ${TBF[par]}" |
---|
| 138 | ogExecAndLog COMMAND ogFormatFs $dis $par ${TBF[par]} |
---|
| 139 | if [ $? -ne 0 ]; then |
---|
| 140 | kill $COPROC_PID |
---|
| 141 | exit $(ogRaiseError session log $OG_ERR_GENERIC "ogFormatFs $dis $par ${TBF[par]}"); |
---|
| 142 | fi |
---|
| 143 | ;; |
---|
| 144 | esac |
---|
| 145 | done |
---|
| 146 | RETVAL=$? |
---|
| 147 | # Registro de fin de ejecución |
---|
| 148 | ogEcho log session "$MSG_INTERFACE_END $RETVAL" |
---|
[e034672] | 149 | |
---|
[3997593] | 150 | #___________________________________________________________________ |
---|
| 151 | # |
---|
| 152 | # Retorno |
---|
| 153 | #___________________________________________________________________ |
---|
| 154 | |
---|
[314dafb] | 155 | kill $COPROC_PID |
---|
| 156 | exit 0 |
---|
[3997593] | 157 | |
---|