source: admin/Interface/Configurar @ 7a8ab05

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 7a8ab05 was 9a1df17, checked in by ramon <ramongomez@…>, 11 years ago

#611 #640: Adaptar scripts a las funciones ogEcho y ogExecAndLog para que el código sea más legible.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@4405 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 4.6 KB
RevLine 
[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
10echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp
11       
12# Registro de inicio de ejecución
[0483b14]13ogEcho log session "$MSG_INTERFACE_START $0 $*"
[314dafb]14
[e034672]15# Solo ejecutable por OpenGnSys Client.
16PATH=$PATH:$(dirname $0)
17PROG=$(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%'
37shift
38param="$(echo $* | sed 's/[     ]//g')"
[3997593]39
40# Activa navegador para ver progreso
[e034672]41coproc /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]44declare -a TBPRM
[3997593]45
[314dafb]46IFS='!' read -a TBPRM <<<"$param"
47pparam="${TBPRM[0]}"    # Parámetros generales del disco.
48sparam="${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.
53unset TBPRM
54IFS='*' 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 "%".
61declare -a CFG          # Valores de configuración.
62declare -a TBP          # Tabla de particionado.
63declare -a TBF          # Tabla de formateo.
64
65unset TBPRM
66IFS='%' read -a TBPRM <<<"$sparam"
67
68maxp=0
69for ((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
87done
88
89# Control de datos.
90for ((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
101done
[3997593]102
[e034672]103#____________________________________________________
104#
105# Proceso
106#____________________________________________________
107
[3997593]108
109# Desmonta todas las particiones y la caché
[e034672]110ogUnmountCache
[314dafb]111ogUnmountAll $dis &>/dev/null
[e034672]112
113# Elimina la tabla de particiones
114ogDeletePartitionTable $dis 
[9a1df17]115ogExecAndLog session log ogUpdatePartitionTable $dis
[e034672]116
[314dafb]117# Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT).
[e034672]118ogCreatePartitionTable $dis MSDOS
119
[e04f987]120# Cuestión caché
121if [ "$che" == "1" ]; then
[9a1df17]122        ogExecAndLog session log initCache $tch
[e04f987]123fi
124
125# Definir particionado.
[9a1df17]126ogExecAndLog session log ogCreatePartitions $dis ${TBP[@]}
127ogExecAndLog session log ogUpdatePartitionTable $dis
[314dafb]128
[9a1df17]129RETVAL=$?
[e034672]130if [ $RETVAL -ne 0 ]; then
131        kill $COPROC_PID
[314dafb]132        exit $RETVAL
[e034672]133fi
[314dafb]134
135# Formatear particiones, excepto las marcadas como "EMPTY".
136for ((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]146done   
147
[3997593]148#___________________________________________________________________
149#
150# Retorno
151#___________________________________________________________________
152
[314dafb]153kill $COPROC_PID
154exit 0
[3997593]155
Note: See TracBrowser for help on using the repository browser.