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