]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blob - BUGAFINSTAL
Tengo en cuenta si el .conf se trunco en 0 por algun motivo y creo el basico de nuevo...
[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 i"e inicie nuevamente el procedimiento de instalación."
58 MARCA
59         return 1
60         fi
61 }
62
63 # Modifica una linea dada de un archivo dado
64 function changeLine() {
65         cat $1 | sed "${2}s%.*%$3%" > $1
66 }
67
68 # Permite seleccionar que componentes se instalaran
69 function selectModules() {
70         PS3="Seleccione un componente:"
71         choices="AFIMONIO AFICONF ANTIFRAUDE"
72         key="S"
73         toinstall=""
74         while [ "$key" = "S" ] && [ -n "$choices" ]
75         do
76                 clear
77                 cat <<MARCA
78
79 ***********************************************************
80 *  SELECCION de COMPONENTES                               *
81 *  Por favor seleecione los componentes a ser instalados  *
82 *  de a uno por vez, a traves del siguiente menu:         *
83 ***********************************************************
84 >> Se instalaran: $toinstall
85
86 MARCA
87                 select REPLY in $choices
88                 do
89                         case $REPLY in
90                         "AFIMONIO" ) selected="afimonio";;
91                         "AFICONF" ) selected="aficonf";;
92                         "ANTIFRAUDE" ) selected="antifraude.pl";;
93                         * ) selected="INVALID";;
94                         esac
95                 break
96                 done
97
98                 if [ $selected != "INVALID" ]; then
99                         choices=`echo $choices | sed s/$REPLY//`
100                         if [ -z "$toinstall" ]; then toinstall=$selected
101                         else toinstall="$toinstall,$selected"
102                         fi
103         
104                         if [ -n "$choices" ]; then
105                                 echo
106                                 echo "Se instalara [$selected], si desea seleccionar"
107                                 echo "otro componente presione \"S\" y luego ENTER, de lo contrario"
108                                 echo "presione solo ENTER para comenzar a instalar los componentes"
109                                 read key
110                                 if [ "$key" = "s" ]; then key="S"
111                                 fi
112                         fi
113                 fi
114         done
115         if [ -n "$key" ]; then echo
116         fi
117 cat <<MARCA
118 ***********************************************************
119 * La seleccion de componentes ha finalizado. Se procedera *
120 * con la instalacion.                                     *
121 ***********************************************************
122 Componentes a instalar: [ $toinstall ]
123
124 < Presione una tecla para continuar >
125 MARCA
126 read key
127 }
128
129 ################### MAIN SCRIPT CODE ###################
130 clear
131 SISOPTP=$(uname)
132 CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%`
133
134 # [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL
135 echo ">> Verificando version del software contra el OS.."
136 checkOS
137 if [ "$?" -ne 0 ]; then exit 1
138 fi
139 echo ">> Verificando la existencia de PERL.."
140 checkPerl
141 if [ "$?" -ne 0 ]; then exit 1
142 fi
143 echo ">> Proceso de instalacion para $SISOPTP iniciado."
144 echo ">> Presione ENTER para continuar"
145 read key
146
147 # [STEP2] License Agreements
148 cat <<MARCA
149 ***************************************************************
150 *                                                             *
151 *            Proceso de instalacion de "Antifraude"           *
152 *              Copyright TPSistemasOp (c) 2004                *
153 *                                                             *
154 ***************************************************************
155  A T E N C I O N: Al instalar Antifraude UD. expresa estar
156  en un todo de acuerdo con los terminos y condiciones del 
157  ACUERDO DE LICENCIA DE SOFTWARE incluido en este paquete.
158  
159  Si desea cancelar este proceso oprima 'F' y luego ENTER.
160  Para continuar oprima ENTER.
161 MARCA
162 key="something"
163 while [ "$key" != "" ]; do
164 read key
165 if [ "$key" = "F" ]; then
166         echo ">> Proceso de instalacion cancelado"
167         exit 0
168 fi
169 done
170
171 # [STEP3] Chequeamos si hay componentes ya instalados
172
173
174 # [STEP4] Seleecion de los componentes a instalar
175 # TODO: tener en cuenta los que ya estan y no permitir elegirlos
176 selectModules
177
178 # [STEP5] Definir paths de cada componente e instalarlo guardando
179 #         la informacion pertinente en el afinstal.conf
180 CONFDIR="${CURRDIR}/conf"
181 INSTDIR="${CURRDIR}/inst"
182 CONFFILE="${CONFDIR}/afinstal.conf"
183 DEFAULTDIR=$CURRDIR
184
185 if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then
186         touch "$CONFFILE"
187         echo "INSTDIR = $INSTDIR" >> $CONFFILE
188         echo "CONFDIR = $CONFDIR" >> $CONFFILE
189         for n in `seq 3 51`; do
190                 echo "" >> $CONFFILE
191         done            
192 fi
193
194 # Comienzo la instalacion de cada componente
195 comandos=`echo $toinstall | sed s%,%" "%g`
196 for comando in $comandos
197 do
198         choice='something'
199         while [ -n "$choice" ]; do
200         
201         # Directorios FIJOS para todos los componentes
202         clear
203         cat <<MARCA
204
205 ** Iniciando instalacion del componente <$comando>.
206 ** A continuacion se le permitira establecer la estructura de
207 ** directorios donde se instalara el mismo.
208
209 >> Nombre del directorio de instalacion: ($INSTDIR)
210 >> Nombre del directorio de configuracion: ($CONFDIR)
211
212 Por favor ingrese un path raiz en donde se crearan los directorios de
213 ejecutables, datos y logs segun corresponda o bien presione ENTER para
214 aceptar el siguiente sugerido: $CURRDIR
215 MARCA
216
217         # Le pido un rootpath donde se instalara este comando en particular
218         read userpath
219         if [ -n "$userpath" ]; then     ROOTPATH=$userpath
220         else ROOTPATH=$CURRDIR
221         fi
222
223         # preparlos los dirs que voy a sugerir
224         BINDIR="${ROOTPATH}/bin"
225         LOGDIR="${ROOTPATH}/log"
226         DATADIR=""
227                 
228         # Le muestro el directorio sugerido para los binarios 
229         askDir "ejecutables" "bin" $BINDIR
230         if [ "$?" -ne 0 ]; then BINDIR="${ROOTPATH}/$DIRSELECTED"
231         fi
232
233         # Si estoy con antifraude.pl muestro el sugerido para los datos
234         if [ "$comando" = "antifraude.pl" ]; then
235                 DATADIR="${ROOTPATH}/llamadas"
236                 askDir "datos" "llamadas" $DATADIR
237                 if [ "$?" -ne 0 ]; then DATADIR="${ROOTPATH}/$DIRSELECTED"
238                 fi
239         fi
240
241         # Le muestro el directorio para los logs
242         askDir "de datos" "log" $LOGDIR
243         if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED"
244         fi
245
246         # Le sugiero el archivo de log
247         echo ">> Nombre del archivo de log: (${comando%.pl}.log)"
248         echo "Si desea conservar este nombre presione ENTER, de lo contrario"
249         echo "ingrese un nuevo nombre y luego presione ENTER"
250         read LOGFILE
251         if [ -z "$LOGFILE" ]; then
252                 LOGFILE="${comando%.pl}.log"
253         fi
254
255         # Le sugiero un size para el logfile
256         echo ">> Tamaño máximo para el archivo ($LOGFILE) en MB: 200"
257         echo "Si desea conservar este valor presione ENTER, de lo contrario ingrese"
258         echo "un nuevo valor y luego presione ENTER"
259         read LOGSIZE
260         if [ -z "$LOGSIZE" ]; then
261                 LOGSIZE=200
262         fi
263
264         cat <<MARCA
265 >>  Parametros de instalacion de $comando
266 >>  ===================================================================
267 >>  Directorio de instalación: $INSTDIR
268 >>  Directorio de configuración: $CONFDIR
269 >>  Directorio de ejecutables: $BINDIR
270 >>  Directorio de datos: $DATADIR
271 >>  Archivo de log: $LOGDIR/$LOGFILE
272 >>  Tamaño máximo para el archivo de log: $LOGSIZE
273
274 Si los datos ingresados son correctos oprima solamente ENTER, si desea
275 modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
276 MARCA
277         read choice
278         done
279         
280         cat <<MARCA
281 Si desea iniciar la instalación de <$comando>, oprima ENTER, si desea
282 cancelar el proceso oprima cualquier otra tecla y luego ENTER.
283 MARCA
284         read choice
285         if [ -n "$choice" ]; then exit 1
286         fi
287
288         # Comienzo a crear la estructura de directorios definida (Check permisos!!)
289         echo ">> Creando Estructura de Directorio...."
290         mkdir -p $BINDIR
291         mkdir -p $LOGDIR
292         touch $LOGDIR/$LOGFILE
293         if [ $comando = "antifraude.pl" ]; then
294                 mkdir -p $DATADIR
295                 mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas}
296         fi
297         echo ">> Moviendo Archivos....."
298         cp $INSTDIR/$comando $BINDIR
299         cp $INSTDIR/umbrales.param $CONFDIR
300         #cp $INSTDIR/*.data $DATADIR/aprocesar
301
302         # Guardo los datos en el archivo de configuracion
303         case $comando in
304                 "antifraude.pl" ) numline=10;;
305                 "aficonf" ) numline=20;;
306                 "afimonio" ) numline=30;;
307         esac    
308                 
309         changeLine "$CONFFILE" "$numline" "Comando $comando"
310         numline=$(($numline+1))
311         changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR"
312         numline=$(($numline+1))
313         changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR"
314         numline=$(($numline+1))
315         changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE"
316         numline=$(($numline+1))
317         changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE"
318         numline=$(($numline+1))
319         if [ "$comando" = "antifraude.pl" ]; then
320                 changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR"
321                 numline=$(($numline+1))
322                 changeLine "$CONFFILE" "$numline" "DATASIZE = "
323                 numline=$(($numline+1))
324         fi
325         changeLine "$CONFFILE" "$numline" "USERID = `id | sed 's/(.*//;s/uid=//'`"
326         numline=$(($numline+1))
327         changeLine "$CONFFILE" "$numline" "FECINS = `date`"
328 done
329
330 # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados
331
332 # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema
333
334
335 ################## NO DAR BOLA A TODO LO QUE SIGUE ########################
336 exit 0
337 if [ "2" = "3" ]; then
338         #busco paquetes instalados. Leo afinstal.conf para ver que hay
339         #como el archivo existe, tiene que tener alguna info almacenada..
340         instdir=`cat $afinstal | grep -n INSTDIR | grep 1 | sed s/\.\*\=\ //`
341         confdir=`cat $afinstal | grep -n CONFDIR | grep 2 | sed s/\.\*\=\ //`
342         #Busco los binarios
343         comp=0
344         anti=0
345         afic=0
346         afim=0  
347         bindir=`cat $afinstal | grep -n  BINDIR | grep 11 | sed s/\.\*\=\ //`
348         logdir=`cat $afinstal | grep -n  LOGDIR | grep 12 | sed s/\.\*\=\ //`
349         logname=`cat $afinstal | grep -n LOGNAME | grep 13 | sed s/\.\*\=\ //`
350         logsize=`cat $afinstal | grep -n  BINDIR | grep 14 | sed s/\.\*\=\ //`
351
352         # Si habia algo instalado, la informacion del los directorios quedo
353         # almacenada, pues es igual para todos los scripts. Excepto el directorio de
354         # datos para antifraude.
355         if [ ! -f "$bindir""antifraude.pl" ]; then
356                 #instalo antifraude porque no existe
357                 echo "Instalando Antifraude..."
358                 anti=1
359                 cp "$instdir/antifraude.pl" "$bindir/antifraude.pl"
360         fi
361         if [ ! -f "$bindir""aficonf" ]; then
362                 #instalo aficonf porque no existe
363                 echo "Instalando Aficonf..."
364                 afic=1
365         cp "$instdir/aficonf" "$bindir/aficonf"
366         fi
367         if [ ! -f "$bindir""afimonio" ]; then
368                 #instalo afimonio porque no existe
369                 echo "Instalando Afimonio..."
370                 afim=1
371                 cp "$instdir/afimonio" "$bindir/afimonio"
372         fi
373
374         #busco los datos
375         fecha1=`cat $afinstal | grep -n FECINS | grep 18 | sed s/\.\*\=\ //`
376         fecha2=`cat $afinstal | grep -n FECINS | grep 26 | sed s/\.\*\=\ //`
377         fecha3=`cat $afinstal | grep -n FECINS | grep 36 | sed s/\.\*\=\ //`
378         usu1=`cat $afinstal | grep -n USERID | grep 17 | sed s/\.\*\=\ //`
379         usu2=`cat $afinstal | grep -n USERID | grep 25 | sed s/\.\*\=\ //`
380         usu3=`cat $afinstal | grep -n USERID | grep 35 | sed s/\.\*\=\ //`
381
382 cat<<MARCA
383 ***************************************************************
384 * Se encuentran instalados los siguientes componentes:        *
385 * Antifraude.pl instalado el $fecha1 por $usu1 *
386 * Aficonf instalado el $fecha2 por $usu2 *
387 * Antifraude.pl instalado el $fecha3 por $usu3  *
388 *                                                             *
389 *               Copyright TPSistemasOp (c) 2004               *
390 ***************************************************************
391
392 Proceso de instalación cancelado.
393 MARCA
394 fi