source: admin/Interface/RestaurarImagen @ 7d4ce64

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 7d4ce64 was c25ddaf, checked in by adv <adv@…>, 13 years ago

1.0.3 comando restaurar directo multicast unicast #475

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

  • Property mode set to 100755
File size: 6.0 KB
Line 
1#!/bin/bash
2#_______________________________________________________________________________________________________________________________
3#
4# PARAMETROS RECIBIDOS DESDE EL CLIENTE:
5# $1 disco
6# $2 par=N�mero de particion
7# $3 Nombre can�nico de la imagen
8# $4 Direcci�n IP del repositorio
9# $5 Protocolo  UNICAST  MULTICAST  TORRENT
10# $6 Opciones del protocolo
11#_______________________________________________________________________________________________________________________________
12
13#Descripcion:
14# La interfaz detecta:
15#    Si Repositorio es el global (REPO) realiza un deploy.
16#    Si Repositorio es local (CACHE) realiza un ogRestoreImage CACHE
17# El deploy, si detecta que el cliente no tiene una cache con espacio suficiente reazlia un ogRestore REPO
18
19#Códigos de error de ogRestoreImage
20#@exception OG_ERR_FORMAT   1 formato incorrecto.
21#@exception OG_ERR_NOTFOUND  2 fichero de imagen o partición no detectados.
22#@exception OG_ERR_PARTITION 3  # Error en partición de disco.
23#@exception OG_ERR_LOCKED    4 partición bloqueada por otra operación.
24#@exception OG_ERR_IMAGE    5 error al restaurar la imagen del sistema.
25#@exception OG_ERR_IMGSIZEPARTITION  30 Tamaño de la particion es menor al tamaño de la imagen.
26#@todo: el scripts restoreImage limitarlo a origen:fichero destino:particion
27#@version 1.0.1 - Separación en protocolos de transferencia y postconfiguracion
28#@author  Antonio J. Doblas Viso. Universidad de Málaga
29#@date   2011-05-11
30#@version 1.0.1 - Separación de los ficheros-log para ser gestionado por el httpd-log
31#@author Antonio J. Doblas Viso. Universidad de Málaga 
32#@date   2011-05-11
33
34
35TIME1=$SECONDS
36#Carga del configurador del engine
37[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
38
39#OGLOGSESSION="${OGLOGSESSION=:-/tmp/session.log}"
40#OGLOGCOMMAND="${OGLOGCOMMAND=:-/tmp/command.log}"
41#OGLOGSESSION="/tmp/session.log"
42#OGLOGCOMMAND="/tmp/command.log"
43
44echo " " > $OGLOGSESSION
45echo " " > $OGLOGCOMMAND
46echo " " > ${OGLOGCOMMAND}.tmp
47# Registro de ejecución
48echo $* >> $OGLOGSESSION
49echo "$*" &>> $OGLOGSESSION | $(tail -n 1 $OGLOGSESSION >> $OGLOGFILE)
50
51
52echo "[1] Iniciando $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
53
54# Si el origen(pariticion) esta bloqueada salir.
55
56echo "TODO comprobando si esta bloqueado el $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
57#if ogIsLocked $1 $2; then
58#       ogRaiseError $OG_ERR_LOCKED "$MSG_PARTITION, $1 $2"
59#       exit $?
60#fi
61
62# Valor por defecto para el repositorio.
63REPO=${4:-"REPO"}
64[ "$REPO" == "$(ogGetRepoIp)" ] && REPO="REPO"
65[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE"
66[ "$REPO" == "CACHE" ] && REPO="CACHE"
67
68
69if [ "$REPO" == "CACHE" ]
70then
71        echo "[2] Iniciando un ogRestoreImage CACHE $3 $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
72        ogRestoreImage CACHE "$3" "$1" "$2" &>> $OGLOGCOMMAND
73        RETVAL=$?
74fi     
75
76
77
78if [ "$REPO" == "REPO" ]
79then
80        case "$5" in
81                MULTICAST-DIRECT)
82                        NEXTOPERATION=MULTICAST
83                ;;
84                UNICAST-DIRECT)
85                    NEXTOPERATION=UNICAST
86                ;;
87                *)
88                        echo "[2] updateCache REPO \"/$3.img\" $5 $6"    | tee -a $OGLOGSESSION $OGLOGFILE
89                        TIME2=$SECONDS
90                        updateCache REPO "/$3.img" "$5" "$6"     &>> $OGLOGCOMMAND     
91                        RETVAL=$?
92                        TIME2=$[SECONDS-TIME2]
93                        echo "   [ ] Duracion del subproceso updateCache $[TIME2/60]m $[TIME2%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
94                        case $RETVAL in
95                                0)
96                                        echo "[50] updateCache (correcto)" | tee -a $OGLOGSESSION $OGLOGFILE
97                                        NEXTOPERATION=CACHE
98                                ;;
99                                15|16)
100                                        echo "[50] equipo sin CACHE o tamaño insufiente, analizando proceso a realizar según engine.cfg" | tee -a $OGLOGSESSION $OGLOGFILE
101                                        case "$RESTOREPROTOCOLNOCACHE" in
102                                                MULTICAST|multicast)
103                                                        [ "$5" == "MULTICAST" ] &&      NEXTOPERATION=MULTICAST
104                                                        [ "$5" == "TORRENT" ] &&        NEXTOPERATION=UNICAST
105                                                        [ "$5" == "UNICAST" ] &&        NEXTOPERATION=UNICAST
106                                                ;;
107                                                UNICAST|unicast)
108                                                        NEXTOPERATION=UNICAST
109                                                ;;
110                                        esac
111                                ;;                                                     
112                        esac
113                ;;
114        esac   
115fi
116
117TIME3=$SECONDS
118
119case $NEXTOPERATION in
120        CACHE)         
121                echo "[55] Restaurando la imagen desde la cache con comando: ogRestoreImage CACHE $3 $1 $2 UNICAST" | tee -a $OGLOGSESSION $OGLOGFILE
122                ogRestoreImage CACHE "$3" "$1" "$2" &> $OGLOGCOMMAND     
123                RETVAL=$?
124        ;;
125        UNICAST)
126                echo "[55] Se restaura la imagen directamente desde el REPO: ogRestoreImage REPO $3 $1 $2 UNICAST"  | tee -a $OGLOGSESSION $OGLOGFILE
127                ogRestoreImage REPO "$3" "$1" "$2" &> $OGLOGCOMMAND             
128                RETVAL=$?
129        ;;
130        MULTICAST)
131                echo "[55] Se restaura la imagen directamente a la Particion por MULTICAST"  | tee -a $OGLOGSESSION $OGLOGFILE
132                OPTPROTOCOLO=$6
133                REPOIP=$(ogGetRepoIp)
134                echo "determinando puerto principal y auxiliar." | tee -a $OGLOGSESSION
135                PORT=$(echo $OPTPROTOCOLO | cut -f1 -d":")
136                let PORTAUX=$PORT+1
137                #TODO: ticket 379
138                NUMBER=$[ ( $RANDOM % 30 )  + 1 ]
139                sleep $NUMBER
140                #FIN TODO
141                tools=$(ogGetImageProgram REPO $3)
142                compressor=$(ogGetImageCompressor REPO $3)
143                echo "comprobando puerto $PORTAUX en $REPOIP (sesion multicast en puerto $PORT) " | tee -a $OGLOGSESSION
144                if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
145                then
146                        ogMcastReceiverPartition $1 $2 $PORT $tools $compressor &> $OGLOGCOMMAND       
147                else
148                        # TODO ticket 379 Realizar la petición basada en identificador de operacion
149                        echo "solicita la apertura:  hose $REPOIP 2009 --out sh -c echo -ne START_MULTICAST /$3.img $OPTPROTOCOLO"  | tee -a $OGLOGSESSION
150                        hose $REPOIP 2009 --out sh -c "echo -ne START_MULTICAST /$3.img $OPTPROTOCOLO"                                 
151                        #echo "espero y llamo a: ogMcastReceiverFile $PORT CACHE $2"
152                        sleep 20
153                        if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
154                        then
155                                        ogMcastReceiverPartition $1 $2 $PORT $tools $compressor   &> $OGLOGCOMMAND     
156                                        RETVAL=$?               
157                        fi
158                fi             
159        ;;
160        REPEAT)
161                $0 $*
162        ;;
163esac
164
165TIME3=$[SECONDS-TIME3]
166echo "   [ ] $RETVAL Duracion del subproceso de restauracion: $[TIME3/60]m $[TIME3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
167
168
169#if [ $RETVAL == 0 ]
170#then
171        echo "[90] Iniciando la Configuracion del Sistema Restaurado" | tee -a $OGLOGSESSION $OGLOGFILE
172        configureOs "$1" "$2"
173#fi
174
175TIME=$[SECONDS-TIME1]
176echo "[100] $RETVAL Duracion de la operacion $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
177exit $RETVAL
178
Note: See TracBrowser for help on using the repository browser.