source: admin/Interface/Configurar @ 0a735488

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 0a735488 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
Line 
1#!/bin/bash
2
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
13ogEcho log session "$MSG_INTERFACE_START $0 $*"
14
15# Solo ejecutable por OpenGnSys Client.
16PATH=$PATH:$(dirname $0)
17PROG=$(basename $0)
18
19#____________________________________________________________________
20#
21# El parámetro $2 es el que aporta toda la información y el $1 se queda obsoleto
22# Formato de entrada:
23#               dis=Número de disco
24#               *=caracter de separación
25#               che=Vale 0 o 1
26#               *=caracter de separación
27#               $tch=tamaño cache
28#               != caracter de separación
29#
30#   Y un numero indeterminado de cadenas del tipo siguuenteseparadas por el caracter '$':
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
33#____________________________________________________________________
34
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')"
39
40# Activa navegador para ver progreso
41coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh
42
43# Leer los dos bloques de parámetros, separados por '!'.
44declare -a TBPRM
45
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
102
103#____________________________________________________
104#
105# Proceso
106#____________________________________________________
107
108
109# Desmonta todas las particiones y la caché
110ogUnmountCache
111ogUnmountAll $dis &>/dev/null
112
113# Elimina la tabla de particiones
114ogDeletePartitionTable $dis 
115ogExecAndLog session log ogUpdatePartitionTable $dis
116
117# Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT).
118ogCreatePartitionTable $dis MSDOS
119
120# Cuestión caché
121if [ "$che" == "1" ]; then
122        ogExecAndLog session log initCache $tch
123fi
124
125# Definir particionado.
126ogExecAndLog session log ogCreatePartitions $dis ${TBP[@]}
127ogExecAndLog session log ogUpdatePartitionTable $dis
128
129RETVAL=$?
130if [ $RETVAL -ne 0 ]; then
131        kill $COPROC_PID
132        exit $RETVAL
133fi
134
135# Formatear particiones, excepto las marcadas como "EMPTY".
136for ((par=1; par<=$maxp; par++)); do
137        sfi="${TBF[par]}"
138        if [ "$sfi" != "EMPTY" ]; then
139                ogExecAndLog session log ogFormatFs $dis $par $sfi
140                RETVAL=$?
141                if [ $RETVAL -ne 0 ]; then
142                        kill $COPROC_PID
143                        exit $OG_ERR_PARTITION
144                fi
145        fi
146done   
147
148#___________________________________________________________________
149#
150# Retorno
151#___________________________________________________________________
152
153kill $COPROC_PID
154exit 0
155
Note: See TracBrowser for help on using the repository browser.