]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blob - BUGAFINSTAL
Some progress, todavia ignorar STEP3 y lo que sigue al exit obligado de la linea 375
[z.facultad/75.08/llamadas.git] / BUGAFINSTAL
1 #!/bin/bash 
2 # vim: set softtabstop=4 tabstop=4 
3
4 ################# Funciones ###########################
5
6 # Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto
7 function cambiaruta() {
8         echo ""
9         echo "Nombre del directorio $1 es: ($2)"
10         echo "Si desea modificarlo ingrese la ruta completa deseada y luego presione ENTER"
11         echo "de lo contrario presione ENTER."
12         echo ""
13         read DIRSELECTED
14         if [ -n "$DIRSELECTED" ]; then
15                 return 0
16         else 
17                 return 1
18         fi
19 }
20
21 # Devuelve 0 si el script y el OS matchean, 1 otherwise
22 function checkOS() {
23         if echo $0 | egrep -q 'AFINSTAL$'; then
24                 SCRIPTOS="Linux"
25         fi
26         if echo $0 | egrep -q 'AFINSTAM$'; then
27                 SCRIPTOS="Mac"
28         fi
29         if echo $0 | egrep -q 'AFINSTAW$'; then
30                 SCRIPTOS="Windows"
31         fi
32
33         if [ "$SISOPTP" != "$SCRIPTOS" ]; then
34                 cat<<MARCA
35
36 ### ERROR ###
37 Este proceso de instalacion es para $SISOPTP y su sistema operativo 
38 es $CURSIS. Solicite a su proveedor la version adecuada e inicie 
39 nuevamente el proceso de instalacion.
40
41 MARCA
42         return 1
43         else return 0
44         fi
45 }
46
47 # Devuelve 0 si se encuentra Perl instalado, 1 otherwise
48 function checkPerl() {
49         if [ "perl" = "`type perl | sed s/\"perl is .*\"/\"perl\"/`" ]; then 
50                 return 0;
51         else
52         cat <<MARCA
53 >> Verificando la existencia de PERL .. FAILED!
54
55 "ERROR!!!"
56 "Este proceso de instalación solo puede ser"
57 "ejecutado si Perl 5 o superior ya esta instalado"
58
59 "Efectúe a instalación de Perl"
60 "e inicie nuevamente el procedimiento de instalación."
61 MARCA
62         return 1
63         fi
64 }
65
66 # Permite seleccionar que componentes se instalaran
67 function selectModules() {
68         PS3="Seleccione un componente:"
69         choices="AFIMONIO AFICONF ANTIFRAUDE"
70         key="S"
71         toinstall=""
72         while [ "$key" = "S" ] && [ -n "$choices" ]
73         do
74                 clear
75                 cat <<MARCA
76
77 ***********************************************************
78 *  SELECCION de COMPONENTES                               *
79 *  Por favor seleecione los componentes a ser instalados  *
80 *  de a uno por vez, a traves del siguiente menu:         *
81 ***********************************************************
82 >> Se instalaran: $toinstall
83
84 MARCA
85                 select REPLY in $choices
86                 do
87                         case $REPLY in
88                         "AFIMONIO" ) selected="afimonio";;
89                         "AFICONF" ) selected="aficonf";;
90                         "ANTIFRAUDE" ) selected="antifraude.pl";;
91                         * ) selected="INVALID";;
92                         esac
93                 break
94                 done
95
96                 if [ $selected != "INVALID" ]; then
97                         choices=`echo $choices | sed s/$REPLY//`
98                         if [ -z "$toinstall" ]; then toinstall=$selected
99                         else toinstall="$toinstall,$selected"
100                         fi
101         
102                         if [ -n "$choices" ]; then
103                                 echo
104                                 echo "Se instalara [$selected], si desea seleccionar"
105                                 echo "otro componente presione \"S\" y luego ENTER, de lo contrario"
106                                 echo "presione solo ENTER para comenzar a instalar los componentes"
107                                 read key
108                                 if [ "$key" = "s" ]; then key="S"
109                                 fi
110                         fi
111                 fi
112         done
113         if [ -n "$key" ]; then echo
114         fi
115 cat <<MARCA
116 ***********************************************************
117 * La seleccion de componentes ha finalizado. Se procedera *
118 * con la instalacion.                                     *
119 ***********************************************************
120 Componentes a instalar: [ $toinstall ]
121
122 < Presione una tecla para continuar>
123 MARCA
124 read key
125 }
126
127 ################### MAIN SCRIPT CODE ###################
128 clear
129 SISOPTP=$(uname)
130 CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%`
131
132 # [STEP1] Verifico el OS vs SCRIP y la presencia de PERL
133 echo ">> Verificando version del software contra el OS.."
134 checkOS
135 if [ "$?" -ne 0 ]; then exit 1
136 fi
137 echo ">> Verificando la existencia de PERL.."
138 checkPerl
139 if [ "$?" -ne 0 ]; then exit 1
140 fi
141 echo ">> Proceso de instalacion para $SISOPTP iniciado."
142 echo ">> Presione ENTER para continuar"
143 read key
144
145 # [STEP2] License Agreements
146 cat <<MARCA
147 ***************************************************************
148 *                                                             *
149 *            Proceso de instalacion de "Antifraude"           *
150 *              Copyright TPSistemasOp (c) 2004                *
151 *                                                             *
152 ***************************************************************
153  A T E N C I O N: Al instalar Antifraude UD. expresa estar
154  en un todo de acuerdo con los terminos y condiciones del 
155  ACUERDO DE LICENCIA DE SOFTWARE incluido en este paquete.
156  
157  Si desea cancelar este proceso oprima 'F' y luego ENTER.
158  Para continuar oprima ENTER.
159 MARCA
160 key="something"
161 while [ "$key" != "" ]; do
162 read key
163 if [ "$key" = "F" ]; then
164         echo ">> Proceso de instalacion cancelado"
165         exit 0
166 fi
167 done
168
169 # [STEP3] Chequeamos si hay componentes ya instalados
170 if [ "2" = "3" ]; then
171         #busco paquetes instalados. Leo afinstal.conf para ver que hay
172         #como el archivo existe, tiene que tener alguna info almacenada..
173         instdir=`cat $afinstal | grep -n INSTDIR | grep 1 | sed s/\.\*\=\ //`
174         confdir=`cat $afinstal | grep -n CONFDIR | grep 2 | sed s/\.\*\=\ //`
175         #Busco los binarios
176         comp=0
177         anti=0
178         afic=0
179         afim=0  
180         bindir=`cat $afinstal | grep -n  BINDIR | grep 11 | sed s/\.\*\=\ //`
181         logdir=`cat $afinstal | grep -n  LOGDIR | grep 12 | sed s/\.\*\=\ //`
182         logname=`cat $afinstal | grep -n LOGNAME | grep 13 | sed s/\.\*\=\ //`
183         logsize=`cat $afinstal | grep -n  BINDIR | grep 14 | sed s/\.\*\=\ //`
184
185         # Si habia algo instalado, la informacion del los directorios quedo
186         # almacenada, pues es igual para todos los scripts. Excepto el directorio de
187         # datos para antifraude.
188         if [ ! -f "$bindir""antifraude.pl" ]; then
189                 #instalo antifraude porque no existe
190                 echo "Instalando Antifraude..."
191                 anti=1
192                 cp "$instdir/antifraude.pl" "$bindir/antifraude.pl"
193         fi
194         if [ ! -f "$bindir""aficonf" ]; then
195                 #instalo aficonf porque no existe
196                 echo "Instalando Aficonf..."
197                 afic=1
198         cp "$instdir/aficonf" "$bindir/aficonf"
199         fi
200         if [ ! -f "$bindir""afimonio" ]; then
201                 #instalo afimonio porque no existe
202                 echo "Instalando Afimonio..."
203                 afim=1
204                 cp "$instdir/afimonio" "$bindir/afimonio"
205         fi
206
207         #hay que loguear lo que se instalo
208         comp=$(($anti + $afic + $afim))
209         if [ $anti != 0 ]; then
210                 echo "Ingrese la ruta completa para el directorio de datos"
211                 read datadir
212                 while [ ! -d "$datadir" ]; do
213                         echo "La ruta especificada no existe, ingrese un directorio existente"
214                         read datadir
215                 done
216                 echo "Ingrese tamaño máximo de datos"
217                 read datasize
218                 fecha=$(date)
219                 cat "$confdir/afinstal.conf" | sed "10s/.*/Comando antifraude.pl/" > "$confdir/afinstal.conf"
220                 cat "$confdir/afinstal.conf" | sed "11s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf"
221                 cat "$confdir/afinstal.conf" | sed "12s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf"
222                 cat "$confdir/afinstal.conf" | sed "13s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf"
223                 cat "$confdir/afinstal.conf" | sed "14s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf"
224                 cat "$confdir/afinstal.conf" | sed "15s(.*(DATADIR = $datadir(" > "$confdir/afinstal.conf"
225                 cat "$confdir/afinstal.conf" | sed "16s(.*(DATASIZE = $datasize(" > "$confdir/afinstal.conf"
226                 cat "$confdir/afinstal.conf" | sed "17s(.*(USERID = $USER(" > "$confdir/afinstal.conf"
227                 cat "$confdir/afinstal.conf" | sed "18s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf"
228         fi
229         if [ $afic != 0 ]; then
230                 fecha=$(date)
231                 cat "$confdir/afinstal.conf" | sed "20s/.*/Comando aficonf/" > "$confdir/afinstal.conf"
232                 cat "$confdir/afinstal.conf" | sed "21s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf"
233                 cat "$confdir/afinstal.conf" | sed "22s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf"
234                 cat "$confdir/afinstal.conf" | sed "23s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf"
235                 cat "$confdir/afinstal.conf" | sed "24s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf"
236                 cat "$confdir/afinstal.conf" | sed "25s(.*(USERID = $USER(" > "$confdir/afinstal.conf"
237                 cat "$confdir/afinstal.conf" | sed "26s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf"
238         fi
239         if [ $afim != 0 ]; then
240                 fecha=$(date)
241                 cat "$confdir/afinstal.conf" | sed "30s/.*/Comando afimonio/" > "$confdir/afinstal.conf"
242                 cat "$confdir/afinstal.conf" | sed "31s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf"
243                 cat "$confdir/afinstal.conf" | sed "32s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf"
244                 cat "$confdir/afinstal.conf" | sed "33s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf"
245                 cat "$confdir/afinstal.conf" | sed "34s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf"
246                 cat "$confdir/afinstal.conf" | sed "35s(.*(USERID = $USER(" > "$confdir/afinstal.conf"
247                 cat "$confdir/afinstal.conf" | sed "36s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf"
248         fi
249         if [ $comp == 0 ]; then
250
251         #busco los datos
252         fecha1=`cat $afinstal | grep -n FECINS | grep 18 | sed s/\.\*\=\ //`
253         fecha2=`cat $afinstal | grep -n FECINS | grep 26 | sed s/\.\*\=\ //`
254         fecha3=`cat $afinstal | grep -n FECINS | grep 36 | sed s/\.\*\=\ //`
255         usu1=`cat $afinstal | grep -n USERID | grep 17 | sed s/\.\*\=\ //`
256         usu2=`cat $afinstal | grep -n USERID | grep 25 | sed s/\.\*\=\ //`
257         usu3=`cat $afinstal | grep -n USERID | grep 35 | sed s/\.\*\=\ //`
258
259 cat<<MARCA
260 ***************************************************************
261 * Se encuentran instalados los siguientes componentes:        *
262 * Antifraude.pl instalado el $fecha1 por $usu1 *
263 * Aficonf instalado el $fecha2 por $usu2 *
264 * Antifraude.pl instalado el $fecha3 por $usu3  *
265 *                                                             *
266 *               Copyright TPSistemasOp (c) 2004               *
267 ***************************************************************
268
269 Proceso de instalación cancelado.
270 MARCA
271         exit 0
272         fi
273 fi
274
275 # [STEP4] Seleecion de los componentes a instalar
276 # TODO: tener en cuenta los que ya estan
277 selectModules
278
279 # [STEP5] Definir paths de cada componente e instalarlo guardando
280 #         la informacion pertinente en el afinstal.conf
281 CONFDIR="${CURRDIR}/conf"
282 INSTDIR="${CURRDIR}/inst"
283 CONFFILE="${CONFDIR}/afinstal.conf"
284 DEFAULTDIR=$CURRDIR
285
286 # Si no existe el afinstal.conf, lo creo y agrego las primeras 2 lineas
287 if [ ! -f "$CONFFILE" ]; then
288         touch "$CONFFILE"
289         echo "INSTDIR = $INSTDIR" >> $CONFFILE
290         echo "CONFDIR = $CONFDIR" >> $CONFFILE
291         for n in `seq 3 51`; do
292                 echo "" >> $CONFFILE
293         done            
294         exit 0
295 fi
296
297 # Comienzo la instalacion de cada componente
298 comandos=`echo $toinstall | sed s%,%" "%g`
299 for comando in $comandos
300 do
301         # Directorios FIJOS para todos los componentes
302         clear
303         cat <<MARCA
304
305 ** Iniciando instalacion del componente <$comando>.
306 ** A continuacion se le permitira establecer la estructura de
307 ** directorios donde se instalara el mismo.
308
309 >> Nombre del directorio de instalacion: $INSTDIR
310 >> Nombre del directorio de configuracion: $CONFDIR
311
312 Por favor ingrese un path raiz en donde se crearan los directorios de
313 ejecutables, datos y logs segun corresponda o bien presione ENTER para
314 aceptar el siguiente sugerido: $CURRDIR
315 MARCA
316
317         # Le pido un rootpath donde se instalara este comando en particular
318         read userpath
319         if [ -n "$userpath" ]; then     ROOTPATH=$userpath
320         else ROOTPATH=$CURRDIR
321         fi
322
323         # preparlos los dirs que voy a sugerir
324         BINDIR="${ROOTPATH}/bin"
325         DATADIR=""
326         LOGDIR="${ROOTPATH}/log"
327         LOGFILE="${comando}.log"
328         LOGSIZE="20"
329         if [ "$comando" = "antifraude.pl" ]; then 
330                 DATADIR="${ROOTPATH}/llamadas"
331                 LOGFILE="${comando%.pl}.log"
332         fi
333                 
334         # Le muestro los sugeridos y permito cambiar el dir en si, no fullpath!
335 #       if cambiaruta "ejecutables" $BINDIR ; then
336 #               BINDIR="${ROOTPATH}/$DIRSELECTED"
337 #       fi
338 #                       if cambiaruta "de datos" $DATADIR ; then
339 #                               DATADIR=$DIRSELECTED
340 #                       fi
341 #                       if cambiaruta "de log" $LOGDIR ; then
342 #                               LOGDIR=$DIRSELECTED
343 #                       fi
344 #                       echo "Nombre del archivo de log: (${comando}.log)"
345 #                       echo "Si desea conservar este nombre presione ENTER, de lo "
346 #                       echo "contrario ingrese un nuevo nombre y luego ENTER"
347 #                       read LOGNAME
348 #                       if [ -z "$logname" ]; then
349 #                               LOGNAME="${comando}.log"
350 #                       fi
351 #                       echo "Tamaño máximo para el archivo <$LOGNAME> (Mb): 20Mb"
352 #                       echo "Si desea conservar este valor presione ENTER, de lo "
353 #                       echo "contrario ingrese un nuevo valor y luego ENTER"
354 #                       read LOGSIZE
355 #                       if [ -z "$LOGSIZE" ]; then
356 #                               LOGSIZE=20
357 #                       fi
358 #
359         cat <<MARCA
360 >>  Parametros de instalacion de $comando
361 >>  =================================================================
362 >>  Directorio de instalación: $INSTDIR
363 >>  Directorio de configuración: $CONFDIR
364 >>  Directorio de ejecutables: $BINDIR
365 >>  Directorio de datos: $DATADIR
366 >>  Archivo de log: $LOGDIR/$LOGFILE
367 >>  Tamaño máximo para el archivo de log: $LOGSIZE
368
369 Si los datos ingresados son correctos oprima solamente ENTER, si desea
370 modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
371 MARCA
372                         read op         
373 done
374
375 exit 0
376
377 linea=10
378 i=0
379 fecha=$(date)
380
381 for comando in antifraude.pl afimonio aficonf ; do 
382                 op="a" 
383                 while [ -n "$op" ]; do 
384                         #Almance el path actual 
385                         BINDIR="${CURDIR}/bin"
386                         DATADIR="${CURDIR}/llamadas"
387                         LOGDIR="${CURDIR}/log"
388                         
389                         echo "La ruta del directorio de instalación es: ($INSTDIR)"
390                         echo "La ruta del directorio de configuración es: ($CONFDIR)"
391                         echo "La ruta del directorio de ejecutables es: ($BINDIR)"
392                         DIRSELECTED=""
393                         if cambiaruta "ejecutables" $BINDIR ; then
394                                 BINDIR=$DIRSELECTED
395                         fi
396                         if cambiaruta "de datos" $DATADIR ; then
397                                 DATADIR=$DIRSELECTED
398                         fi
399                         if cambiaruta "de log" $LOGDIR ; then
400                                 LOGDIR=$DIRSELECTED
401                         fi
402                         echo "Nombre del archivo de log: (${comando}.log)"
403                         echo "Si desea conservar este nombre presione ENTER, de lo "
404                         echo "contrario ingrese un nuevo nombre y luego ENTER"
405                         read LOGNAME
406                         if [ -z "$logname" ]; then
407                                 LOGNAME="${comando}.log"
408                         fi
409                         echo "Tamaño máximo para el archivo <$LOGNAME> (Mb): 20Mb"
410                         echo "Si desea conservar este valor presione ENTER, de lo "
411                         echo "contrario ingrese un nuevo valor y luego ENTER"
412                         read LOGSIZE
413                         if [ -z "$LOGSIZE" ]; then
414                                 LOGSIZE=20
415                         fi
416
417                         cat <<MARCA 
418                         "               Parametros de instalación de $comando           "
419                         "       ==========================================      "
420                         " Nombre del directorio de instalación: $INSTDIR                "
421                         " Nombre del directorio de ejecutables: $BINDIR                 "
422                         " Nombre del directorio de datos: $DATADIR                              "
423                         " Nombre del directorio de configuración: $CONFDIR              "
424                         " Directorio y nombre del archivo de log: $LOGDIR/$LOGNAME"
425                         " Tamaño máximo para el archivo de log: $LOGSIZE                "
426
427                         Si los datos ingresados son correctos oprima solamente ENTER, si desea
428                         modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
429 MARCA
430                         read op         
431
432                         echo "Si desea iniciar la instalación de <$comando>, oprima"
433                         echo "solamente ENTER, si desea cancelar el proceso oprima"
434                         echo "cualquier otra tecla y luego ENTER."
435
436                         read op
437
438                         if [ -n "$op" ]; then
439                                 echo "Proceso de instalación cancelado"
440                                 exit 0
441                         fi
442
443                         # Cremos los directorios para este comando
444                         echo "Creando Estructura de Directorio...."
445                         mkdir -p $BINDIR
446                         mkdir -p $DATADIR
447                         mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas}
448                         mkdir -p $LOGDIR
449                         touch $LOGDIR/$LOGNAME
450                         echo "Moviendo Archivos....."
451                         cp $INSTDIR/$comando $BINDIR
452                         #cp $INSTDIR/umbrales.param $CONFDIR
453                         #cp $INSTDIR/*.data $DATADIR/aprocesar
454                         
455                         numlinea=$(($linea+$i))
456                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s/.*/Comando $comando/" > "$CONFDIR/afinstal.conf"
457                         i=$(($i+1))
458                         numlinea=$(($linea+$i))
459                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(BINDIR = $BINDIR(" > "$CONFDIR/afinstal.conf"
460                         i=$(($i+1))
461                         numlinea=$(($linea+$i))
462                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGDIR = $LOGDIR(" > "$CONFDIR/afinstal.conf"
463                         i=$(($i+1))
464                         numlinea=$(($linea+$i))
465                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGNAME = $LOGNAME(" > "$CONFDIR/afinstal.conf"
466                         i=$(($i+1))
467                         numlinea=$(($linea+$i))
468                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGSIZE = $LOGSIZE(" > "$CONFDIR/afinstal.conf"
469                         if [ "$FILE" = "antifraude.pl" ]; then
470                                 i=$(($i+1))
471                                 numlinea=$(($linea+$i))
472                                 cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(DATADIR = $DATADIR(" > "$CONFDIR/afinstal.conf"
473                                 i=$(($i+1))
474                                 numlinea=$(($linea+$i))
475                                 cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(DATASIZE = (" > "$CONFDIR/afinstal.conf"
476                         fi              
477                         i=$(($i+1))
478                         numlinea=$(($linea+$i))
479                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(USERID = $USER(" > "$CONFDIR/afinstal.conf"
480                         i=$(($i+1))
481                         numlinea=$(($linea+$i))
482                         cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(FECINS = $fecha(" > "$CONFDIR/afinstal.conf"
483                         i=0
484                         linea=$(($linea+10))
485                 done #for       
486         done #while
487         # Termino la instalacion, muestro informacion.
488         j=10
489         echo " ***************************************************************** "
490         echo " *                        Proceso de instalacion concluido                   * "
491         comandos=`cat "$CONFDIR/afinstal.conf" | grep Comando `
492         for i in 17 25 35 ; do
493                 
494                 fecha=`cat "$CONFDIR/afinstal.conf" | grep -n FECINS | grep $i | sed 's/.*= //'`
495                 i=$(($i +1))
496                 usu=`cat "$CONDIR/afinstal.conf" | grep -n USERID | grep $i | sed 's/.*= //'`
497                 echo " *
498         done