[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 | |
---|
[e034672] | 15 | # Solo ejecutable por OpenGnSys Client. |
---|
| 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 |
---|
| 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 | # Saltar si no existe definición de partición. |
---|
| 75 | if [ -n "$par" -a $par != 0 ]; then |
---|
| 76 | # Componer datos de particionado. |
---|
| 77 | TBP[par]="$cpt:$tam" |
---|
| 78 | # Si se activa operación de formatear, componer datos de formateo. |
---|
| 79 | if [ "$ope" == 1 ]; then |
---|
| 80 | TBF[par]="$sfi" |
---|
| 81 | else |
---|
| 82 | TBF[par]="EMPTY" |
---|
| 83 | fi |
---|
| 84 | # Obtener la partición mayor por si hay que rellenar con valores EMPTY. |
---|
| 85 | [ $par -gt $maxp ] && maxp=$par |
---|
| 86 | fi |
---|
| 87 | done |
---|
| 88 | |
---|
| 89 | # Control de datos. |
---|
| 90 | for ((par=1; par<=maxp; par++)); do |
---|
| 91 | # Ignorar partición 4 si existe caché. |
---|
| 92 | if [ $che != 1 -o $par -ne 4 ]; then |
---|
| 93 | # Rellenar con "EMPTY:0" la configuración de particiones no definidas. |
---|
| 94 | [ -z "${TBP[par]}" ] && TBP[par]="EMPTY:0" |
---|
| 95 | fi |
---|
| 96 | # Ignorar formateo en particiones que no soportan sistemas de archivos. |
---|
| 97 | case "${TBP[par]%:*}" in |
---|
| 98 | ""|EMPTY|EXTENDED|LINUX-SWAP|LINUX-LVM) |
---|
| 99 | TBF[par]="EMPTY" ;; |
---|
| 100 | esac |
---|
| 101 | done |
---|
[3997593] | 102 | |
---|
[e034672] | 103 | #____________________________________________________ |
---|
| 104 | # |
---|
| 105 | # Proceso |
---|
| 106 | #____________________________________________________ |
---|
| 107 | |
---|
[3997593] | 108 | |
---|
| 109 | # Desmonta todas las particiones y la caché |
---|
[e034672] | 110 | ogUnmountCache |
---|
[314dafb] | 111 | ogUnmountAll $dis &>/dev/null |
---|
[e034672] | 112 | |
---|
| 113 | # Elimina la tabla de particiones |
---|
| 114 | ogDeletePartitionTable $dis |
---|
[9a1df17] | 115 | ogExecAndLog session log ogUpdatePartitionTable $dis |
---|
[e034672] | 116 | |
---|
[314dafb] | 117 | # Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT). |
---|
[e034672] | 118 | ogCreatePartitionTable $dis MSDOS |
---|
| 119 | |
---|
[e04f987] | 120 | # Cuestión caché |
---|
| 121 | if [ "$che" == "1" ]; then |
---|
[9a1df17] | 122 | ogExecAndLog session log initCache $tch |
---|
[e04f987] | 123 | fi |
---|
| 124 | |
---|
| 125 | # Definir particionado. |
---|
[9a1df17] | 126 | ogExecAndLog session log ogCreatePartitions $dis ${TBP[@]} |
---|
| 127 | ogExecAndLog session log ogUpdatePartitionTable $dis |
---|
[314dafb] | 128 | |
---|
[9a1df17] | 129 | RETVAL=$? |
---|
[e034672] | 130 | if [ $RETVAL -ne 0 ]; then |
---|
| 131 | kill $COPROC_PID |
---|
[314dafb] | 132 | exit $RETVAL |
---|
[e034672] | 133 | fi |
---|
[314dafb] | 134 | |
---|
| 135 | # Formatear particiones, excepto las marcadas como "EMPTY". |
---|
| 136 | for ((par=1; par<=$maxp; par++)); do |
---|
| 137 | sfi="${TBF[par]}" |
---|
[e034672] | 138 | if [ "$sfi" != "EMPTY" ]; then |
---|
[9a1df17] | 139 | ogExecAndLog session log ogFormatFs $dis $par $sfi |
---|
[314dafb] | 140 | RETVAL=$? |
---|
[e034672] | 141 | if [ $RETVAL -ne 0 ]; then |
---|
| 142 | kill $COPROC_PID |
---|
| 143 | exit $OG_ERR_PARTITION |
---|
| 144 | fi |
---|
[3ec149c] | 145 | fi |
---|
[e034672] | 146 | done |
---|
| 147 | |
---|
[3997593] | 148 | #___________________________________________________________________ |
---|
| 149 | # |
---|
| 150 | # Retorno |
---|
| 151 | #___________________________________________________________________ |
---|
| 152 | |
---|
[314dafb] | 153 | kill $COPROC_PID |
---|
| 154 | exit 0 |
---|
[3997593] | 155 | |
---|