X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/22fd66aa8fbf11c74d642a8948595601c135c34a..a18b3855ba65325afb80830a34c5643c6aec7eb8:/BUGAFINSTAL diff --git a/BUGAFINSTAL b/BUGAFINSTAL index 6bf0d3a..e535294 100755 --- a/BUGAFINSTAL +++ b/BUGAFINSTAL @@ -4,17 +4,15 @@ ################# Funciones ########################### # Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto -function cambiaruta() { - echo "" - echo "Nombre del directorio $1 es: ($2)" - echo "Si desea modificarlo ingrese la ruta completa deseada y luego presione ENTER" - echo "de lo contrario presione ENTER." - echo "" +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 0 - else - return 1 + if [ -n "$DIRSELECTED" ]; then return 1 + else return 0 fi } @@ -50,23 +48,54 @@ function checkPerl() { return 0; else cat <> Verificando la existencia de PERL .. FAILED! "ERROR!!!" "Este proceso de instalación solo puede ser" "ejecutado si Perl 5 o superior ya esta instalado" "Efectúe a instalación de Perl" -"e inicie nuevamente el procedimiento de instalación." +i"e inicie nuevamente el procedimiento de instalación." MARCA return 1 fi } +# Modifica una linea dada de un archivo dado +function changeLine() { + cat $1 | sed "${2}s%.*%$3%" > $1 +} + +# Mensaje generico de abort +function abortMessage { + echo ">> Proceso de instalacion cancelado" +} + +# Muestra los componentes instalados, usando vars ya definidas previamente +function showInstalled { +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 -# [STEP1] Verifico el OS vs SCRIP y la presencia de PERL +# [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL echo ">> Verificando version del software contra el OS.." checkOS -if [ "$?" -ne 0 ]; then exit 1 +if [ "$?" -ne 0 ]; then + abortMessage + exit 1 fi echo ">> Verificando la existencia de PERL.." checkPerl -if [ "$?" -ne 0 ]; then exit 1 +if [ "$?" -ne 0 ]; then + abortMessage + exit 1 fi echo ">> Proceso de instalacion para $SISOPTP iniciado." echo ">> Presione ENTER para continuar" @@ -157,253 +198,210 @@ key="something" while [ "$key" != "" ]; do read key if [ "$key" = "F" ]; then - echo ">> Proceso de instalacion cancelado" + abortMessage exit 0 fi done # [STEP3] Chequeamos si hay componentes ya instalados -if [ -f "./conf/afinstal.conf" ]; then - #busco paquetes instalados. Leo afinstal.conf para ver que hay - #como el archivo existe, tiene que tener alguna info almacenada.. - instdir=`cat $afinstal | grep -n INSTDIR | grep 1 | sed s/\.\*\=\ //` - confdir=`cat $afinstal | grep -n CONFDIR | grep 2 | sed s/\.\*\=\ //` - #Busco los binarios - comp=0 - anti=0 - afic=0 - afim=0 - bindir=`cat $afinstal | grep -n BINDIR | grep 11 | sed s/\.\*\=\ //` - logdir=`cat $afinstal | grep -n LOGDIR | grep 12 | sed s/\.\*\=\ //` - logname=`cat $afinstal | grep -n LOGNAME | grep 13 | sed s/\.\*\=\ //` - logsize=`cat $afinstal | grep -n BINDIR | grep 14 | sed s/\.\*\=\ //` - - # Si habia algo instalado, la informacion del los directorios quedo - # almacenada, pues es igual para todos los scripts. Excepto el directorio de - # datos para antifraude. - if [ ! -f "$bindir""antifraude.pl" ]; then - #instalo antifraude porque no existe - echo "Instalando Antifraude..." - anti=1 - cp "$instdir/antifraude.pl" "$bindir/antifraude.pl" +if [ -f "$CONFFILE" ] && [ -s "$CONFFILE" ]; then + #Busco los nombres de los binarios + binfraude=`grep -n "Comando" "$CONFFILE" | grep 10 | sed s%.*Comando.%%` + binconf=`grep -n "Comando" "$CONFFILE" | grep 20 | sed s%.*Comando.%%` + binmonio=`grep -n "Comando" "$CONFFILE" | grep 30 | sed s%.*Comando.%%` + #Busco donde deberian estar instalados + dirfraude=`grep -n "BINDIR" "$CONFFILE" | grep 11 | sed 's%.*= %%'` + dirconf=`grep -n "BINDIR" "$CONFFILE" | grep 21 | sed 's%.*= %%'` + dirmonio=`grep -n "BINDIR" "$CONFFILE" | grep 31 | sed 's%.*= %%'` + # Verifico finalmente si esta alli el archivo, en caso negativo, habilito + # la posibilidad de instalar ese componente + if [ ! -f "${dirmonio}/$binmonio" ]; then + choices="AFIMONIO" + havemonio=0 + else + havemonio=1 + usermonio=`grep -n "USERID" "$CONFFILE" | grep 35 | sed 's%.*= %%'` + fechamonio=`grep -n "FECINS" "$CONFFILE" | grep 36 | sed 's%.*= %%'` fi - if [ ! -f "$bindir""aficonf" ]; then - #instalo aficonf porque no existe - echo "Instalando Aficonf..." - afic=1 - cp "$instdir/aficonf" "$bindir/aficonf" + + if [ ! -f "${dirfraude}/$binfraude" ]; then + choices="${choices} ANTIFRAUDE" + havefraude=0 + else + havefraude=1 + userfraude=`grep -n "USERID" "$CONFFILE" | grep 17 | sed 's%.*= %%'` + fechafraude=`grep -n "FECINS" "$CONFFILE" | grep 18 | sed 's%.*= %%'` fi - if [ ! -f "$bindir""afimonio" ]; then - #instalo afimonio porque no existe - echo "Instalando Afimonio..." - afim=1 - cp "$instdir/afimonio" "$bindir/afimonio" + if [ ! -f "${dirconf}/$binconf" ]; then + choices="${choices} AFICONF" + haveconf=0 + else + haveconf=1 + userconf=`grep -n "USERID" "$CONFFILE" | grep 25 | sed 's%.*= %%'` + fechaconf=`grep -n "FECINS" "$CONFFILE" | grep 26 | sed 's%.*= %%'` fi + choices=${choices% } + choices=${choices# } +fi - #hay que loguear lo que se instalo - comp=$(($anti + $afic + $afim)) - if [ $anti != 0 ]; then - echo "Ingrese la ruta completa para el directorio de datos" - read datadir - while [ ! -d "$datadir" ]; do - echo "La ruta especificada no existe, ingrese un directorio existente" - read datadir - done - echo "Ingrese tamaño máximo de datos" - read datasize - fecha=$(date) - cat "$confdir/afinstal.conf" | sed "10s/.*/Comando antifraude.pl/" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "11s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "12s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "13s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "14s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "15s(.*(DATADIR = $datadir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "16s(.*(DATASIZE = $datasize(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "17s(.*(USERID = $USER(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "18s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf" +# [STEP4] Seleecion de los componentes a instalar +# TODO: tener en cuenta los que ya estan y no permitir elegirlos +if [ -z "$choices" ]; then + showInstalled + abortMessage + exit 0 +fi +selectModules + +# [STEP5] Definir paths de cada componente e instalarlo guardando +# la informacion pertinente en el afinstal.conf +if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then + touch "$CONFFILE" + echo "INSTDIR = $INSTDIR" >> $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 - if [ $afic != 0 ]; then - fecha=$(date) - cat "$confdir/afinstal.conf" | sed "20s/.*/Comando aficonf/" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "21s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "22s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "23s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "24s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "25s(.*(USERID = $USER(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "26s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf" + + # 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 - if [ $afim != 0 ]; then - fecha=$(date) - cat "$confdir/afinstal.conf" | sed "30s/.*/Comando afimonio/" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "31s(.*(BINDIR = $bindir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "32s(.*(LOGDIR = $logdir(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "33s(.*(LOGNAME = $logname(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "34s(.*(LOGSIZE = $logsize(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "35s(.*(USERID = $USER(" > "$confdir/afinstal.conf" - cat "$confdir/afinstal.conf" | sed "36s(.*(FECINS = $fecha(" > "$confdir/afinstal.conf" + + # 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 - if [ $comp == 0 ]; then - #busco los datos - fecha1=`cat $afinstal | grep -n FECINS | grep 18 | sed s/\.\*\=\ //` - fecha2=`cat $afinstal | grep -n FECINS | grep 26 | sed s/\.\*\=\ //` - fecha3=`cat $afinstal | grep -n FECINS | grep 36 | sed s/\.\*\=\ //` - usu1=`cat $afinstal | grep -n USERID | grep 17 | sed s/\.\*\=\ //` - usu2=`cat $afinstal | grep -n USERID | grep 25 | sed s/\.\*\=\ //` - usu3=`cat $afinstal | grep -n USERID | grep 35 | sed s/\.\*\=\ //` + # Le muestro el directorio para los logs + askDir "de datos" "log" $LOGDIR + if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED" + fi -cat<> 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 -Proceso de instalación cancelado. -MARCA - exit 0 + # 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 -fi -# [STEP4] Seleecion de los componentes a instalar -# TODO: tener en cuenta los que ya estan -selectModules -exit 0 - -# [STEP5] Verifico que perl este instalado - -#defino los paths de configuracion e instalacion - CURDIR=$PWD - CONFDIR="${CURDIR}/conf" - INSTDIR="${CURDIR}/inst" - #creo el afinstal.conf y le agrego las 2 primeras lineas - echo "INSTDIR = $INSTDIR" >> "$CONFDIR/afinstal.conf" - echo "CONFDIR = $CONFDIR" >> "$CONFDIR/afinstal.conf" - for n in `seq 3 51` - do - echo "" >> "$CONFDIR/afinstal.conf" - done - linea=10 - i=0 - fecha=$(date) - for comando in antifraude.pl afimonio aficonf ; do - op="a" - while [ -n "$op" ]; do - #Almance el path actual - BINDIR="${CURDIR}/bin" - DATADIR="${CURDIR}/llamadas" - LOGDIR="${CURDIR}/log" - - echo "La ruta del directorio de instalación es: ($INSTDIR)" - echo "La ruta del directorio de configuración es: ($CONFDIR)" - echo "La ruta del directorio de ejecutables es: ($BINDIR)" - DIRSELECTED="" - if cambiaruta "ejecutables" $BINDIR ; then - BINDIR=$DIRSELECTED - fi - if cambiaruta "de datos" $DATADIR ; then - DATADIR=$DIRSELECTED - fi - if cambiaruta "de log" $LOGDIR ; then - LOGDIR=$DIRSELECTED - fi - echo "Nombre del archivo de log: (${comando}.log)" - echo "Si desea conservar este nombre presione ENTER, de lo " - echo "contrario ingrese un nuevo nombre y luego ENTER" - read LOGNAME - if [ -z "$logname" ]; then - LOGNAME="${comando}.log" - fi - echo "Tamaño máximo para el archivo <$LOGNAME> (Mb): 20Mb" - echo "Si desea conservar este valor presione ENTER, de lo " - echo "contrario ingrese un nuevo valor y luego ENTER" - read LOGSIZE - if [ -z "$LOGSIZE" ]; then - LOGSIZE=20 - 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 - 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 - echo "Si desea iniciar la instalación de <$comando>, oprima" - echo "solamente ENTER, si desea cancelar el proceso oprima" - echo "cualquier otra tecla y luego ENTER." + # 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 - read op + # Guardo los datos en el archivo de configuracion + case $comando in + "antifraude.pl" ) numline=10;; + "aficonf" ) numline=20;; + "afimonio" ) numline=30;; + 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 = `id | sed 's/(.*//;s/uid=//'`" + numline=$(($numline+1)) + changeLine "$CONFFILE" "$numline" "FECINS = `date`" +done - if [ -n "$op" ]; then - echo "Proceso de instalación cancelado" - exit 0 - fi +# [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados - # Cremos los directorios para este comando - echo "Creando Estructura de Directorio...." - mkdir -p $BINDIR - mkdir -p $DATADIR - mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas} - mkdir -p $LOGDIR - touch $LOGDIR/$LOGNAME - echo "Moviendo Archivos....." - cp $INSTDIR/$comando $BINDIR - #cp $INSTDIR/umbrales.param $CONFDIR - #cp $INSTDIR/*.data $DATADIR/aprocesar - - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s/.*/Comando $comando/" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(BINDIR = $BINDIR(" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGDIR = $LOGDIR(" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGNAME = $LOGNAME(" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(LOGSIZE = $LOGSIZE(" > "$CONFDIR/afinstal.conf" - if [ "$FILE" = "antifraude.pl" ]; then - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(DATADIR = $DATADIR(" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(DATASIZE = (" > "$CONFDIR/afinstal.conf" - fi - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(USERID = $USER(" > "$CONFDIR/afinstal.conf" - i=$(($i+1)) - numlinea=$(($linea+$i)) - cat "$CONFDIR/afinstal.conf" | sed "$numlinea""s(.*(FECINS = $fecha(" > "$CONFDIR/afinstal.conf" - i=0 - linea=$(($linea+10)) - done #for - done #while - # Termino la instalacion, muestro informacion. - j=10 - echo " ***************************************************************** " - echo " * Proceso de instalacion concluido * " - comandos=`cat "$CONFDIR/afinstal.conf" | grep Comando ` - for i in 17 25 35 ; do - - fecha=`cat "$CONFDIR/afinstal.conf" | grep -n FECINS | grep $i | sed 's/.*= //'` - i=$(($i +1)) - usu=`cat "$CONDIR/afinstal.conf" | grep -n USERID | grep $i | sed 's/.*= //'` - echo " * - done +# [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema