From 38862030c933f7f675d443fc3c1d8092db9e0c0f Mon Sep 17 00:00:00 2001 From: Alan Kennedy Date: Tue, 12 Oct 2004 05:25:51 +0000 Subject: [PATCH] Proper version del AFINSTAL --- afinstal | 420 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100755 afinstal diff --git a/afinstal b/afinstal new file mode 100755 index 0000000..0d70a05 --- /dev/null +++ b/afinstal @@ -0,0 +1,420 @@ +#!/bin/bash +# vim: set softtabstop=4 tabstop=4 + +################# Funciones ########################### + +# Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto +function askDir() { + cat <> Nombre del directorio de $1 es: ($3) +Si desea modificarlo reemplaze "$2" por el deseado y presione ENTER, +de lo contrario solo presione ENTER." +MARCA + read DIRSELECTED + if [ -n "$DIRSELECTED" ]; then return 1 + else return 0 + fi +} + +# Devuelve 0 si el script y el OS matchean, 1 otherwise +function checkOS() { + if echo $0 | egrep -q 'AFINSTAL$'; then + SCRIPTOS="Linux" + fi + if echo $0 | egrep -q 'AFINSTAM$'; then + SCRIPTOS="Mac" + fi + if echo $0 | egrep -q 'AFINSTAW$'; then + SCRIPTOS="Windows" + fi + + if [ "$SISOPTP" != "$SCRIPTOS" ]; then + cat< $1 +} + +# Mensaje generico de abort +function abortMessage { + echo ">> Proceso de instalacion cancelado" +} + +# Muestra los componentes instalados, usando vars ya definidas previamente +function showInstalled { +cat <> Se instalaran: $toinstall + +MARCA + select REPLY in $choices + do + case $REPLY in + "AFIMONIO" ) selected="afimonio";; + "AFICONF" ) selected="aficonf";; + "ANTIFRAUDE" ) selected="antifraude.pl";; + * ) selected="INVALID";; + esac + break + done + + if [ $selected != "INVALID" ]; then + choices=`echo $choices | sed s/$REPLY//` + if [ -z "$toinstall" ]; then toinstall=$selected + else toinstall="$toinstall,$selected" + fi + + if [ -n "$choices" ]; then + echo + echo "Se instalara [$selected], si desea seleccionar" + echo "otro componente presione \"S\" y luego ENTER, de lo contrario" + echo "presione solo ENTER para comenzar a instalar los componentes" + read key + if [ "$key" = "s" ]; then key="S" + fi + fi + fi + done + if [ -n "$key" ]; then echo + fi +cat < +MARCA +read key +} + +################### MAIN SCRIPT CODE ################### +clear +SISOPTP=$(uname) +CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%` +CONFDIR="${CURRDIR}/conf" +INSTDIR="${CURRDIR}/inst" +CONFFILE="${CONFDIR}/afinstal.conf" +DEFAULTDIR=$CURRDIR +havemonio=0 +haveconf=0 +havefraude=0 + +# [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL +echo ">> Verificando version del software contra el OS.." +checkOS +if [ "$?" -ne 0 ]; then + abortMessage + exit 1 +fi +echo ">> Verificando la existencia de PERL.." +checkPerl +if [ "$?" -ne 0 ]; then + abortMessage + exit 1 +fi +echo ">> Proceso de instalacion para $SISOPTP iniciado." +echo ">> Presione ENTER para continuar" +read key + +# [STEP2] License Agreements +cat <> $CONFFILE + echo "CONFDIR = $CONFDIR" >> $CONFFILE + for n in `seq 3 51`; do + echo "" >> $CONFFILE + done +fi + +# Comienzo la instalacion de cada componente +comandos=`echo $toinstall | sed s%,%" "%g` +for comando in $comandos +do + choice='something' + while [ -n "$choice" ]; do + + # Directorios FIJOS para todos los componentes + clear + cat <. +** A continuacion se le permitira establecer la estructura de +** directorios donde se instalara el mismo. + +>> Nombre del directorio de instalacion: ($INSTDIR) +>> Nombre del directorio de configuracion: ($CONFDIR) + +Por favor ingrese un path raiz en donde se crearan los directorios de +ejecutables, datos y logs segun corresponda o bien presione ENTER para +aceptar el siguiente sugerido: $CURRDIR +MARCA + + # Le pido un rootpath donde se instalara este comando en particular + read userpath + if [ -n "$userpath" ]; then ROOTPATH=$userpath + else ROOTPATH=$CURRDIR + fi + + # preparlos los dirs que voy a sugerir + BINDIR="${ROOTPATH}/bin" + LOGDIR="${ROOTPATH}/log" + DATADIR="" + + # Le muestro el directorio sugerido para los binarios + askDir "ejecutables" "bin" $BINDIR + if [ "$?" -ne 0 ]; then BINDIR="${ROOTPATH}/$DIRSELECTED" + fi + + # Si estoy con antifraude.pl muestro el sugerido para los datos + if [ "$comando" = "antifraude.pl" ]; then + DATADIR="${ROOTPATH}/llamadas" + askDir "datos" "llamadas" $DATADIR + if [ "$?" -ne 0 ]; then DATADIR="${ROOTPATH}/$DIRSELECTED" + fi + fi + + # Le muestro el directorio para los logs + askDir "de datos" "log" $LOGDIR + if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED" + fi + + # Le sugiero el archivo de log + echo ">> Nombre del archivo de log: (${comando%.pl}.log)" + echo "Si desea conservar este nombre presione ENTER, de lo contrario" + echo "ingrese un nuevo nombre y luego presione ENTER" + read LOGFILE + if [ -z "$LOGFILE" ]; then + LOGFILE="${comando%.pl}.log" + fi + + # Le sugiero un size para el logfile + echo ">> Tamaño máximo para el archivo ($LOGFILE) en MB: 200" + echo "Si desea conservar este valor presione ENTER, de lo contrario ingrese" + echo "un nuevo valor y luego presione ENTER" + read LOGSIZE + if [ -z "$LOGSIZE" ]; then + LOGSIZE=200 + fi + + cat <> Parametros de instalacion de $comando +>> =================================================================== +>> Directorio de instalación: $INSTDIR +>> Directorio de configuración: $CONFDIR +>> Directorio de ejecutables: $BINDIR +>> Directorio de datos: $DATADIR +>> Archivo de log: $LOGDIR/$LOGFILE +>> Tamaño máximo para el archivo de log: $LOGSIZE + +Si los datos ingresados son correctos oprima solamente ENTER, si desea +modificar alguno de ellos oprima cualquier otra tecla y luego ENTER. +MARCA + read choice + done + + cat <, oprima ENTER, si desea +cancelar el proceso oprima cualquier otra tecla y luego ENTER. +MARCA + read choice + if [ -n "$choice" ]; then + abortMessage + exit 1 + fi + + # Comienzo a crear la estructura de directorios definida (Check permisos!!) + echo ">> Creando Estructura de Directorio...." + mkdir -p $BINDIR + mkdir -p $LOGDIR + touch $LOGDIR/$LOGFILE + if [ $comando = "antifraude.pl" ]; then + mkdir -p $DATADIR + mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas} + fi + echo ">> Moviendo Archivos....." + cp $INSTDIR/$comando $BINDIR + cp $INSTDIR/umbrales.param $CONFDIR + #cp $INSTDIR/*.data $DATADIR/aprocesar + + # Guardo los datos en el archivo de configuracion + userid=`id | sed 's/(.*//;s/uid=//'` + fecha=$(date) + case $comando in + "afimonio" ) numline=30; + havemonio=1; + usermonio=$userid; + fechamonio=$fecha;; + "aficonf" ) numline=20; + haveconf=1; + userconf=$userid; + fechaconf=$fecha;; + "antifraude.pl" ) numline=10; + havefraude=1; + userfraude=$userid; + fechafraude=$fecha;; + esac + + changeLine "$CONFFILE" "$numline" "Comando $comando" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE" + numline=$(($numline+1)) + if [ "$comando" = "antifraude.pl" ]; then + changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "DATASIZE = " + numline=$(($numline+1)) + fi + changeLine "$CONFFILE" "$numline" "USERID = $userid" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "FECINS = $fecha" +done + +# [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados + +# [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema +showInstalled -- 2.43.0