#!/bin/bash # vim: set softtabstop=4 tabstop=4 ################# 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 "" read DIRSELECTED if [ -n "$DIRSELECTED" ]; then return 0 else return 1 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<> 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." MARCA return 1 fi } # Permite seleccionar que componentes se instalaran function selectModules() { PS3="Seleccione un componente:" choices="AFIMONIO AFICONF ANTIFRAUDE" key="S" toinstall="" while [ "$key" = "S" ] && [ -n "$choices" ] do clear 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%` # [STEP1] Verifico el OS vs SCRIP y la presencia de PERL echo ">> Verificando version del software contra el OS.." checkOS if [ "$?" -ne 0 ]; then exit 1 fi echo ">> Verificando la existencia de PERL.." checkPerl if [ "$?" -ne 0 ]; then exit 1 fi echo ">> Proceso de instalacion para $SISOPTP iniciado." echo ">> Presione ENTER para continuar" read key # [STEP2] License Agreements cat <> Proceso de instalacion cancelado" exit 0 fi done # [STEP3] Chequeamos si hay componentes ya instalados if [ "2" = "3" ]; 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" fi if [ ! -f "$bindir""aficonf" ]; then #instalo aficonf porque no existe echo "Instalando Aficonf..." afic=1 cp "$instdir/aficonf" "$bindir/aficonf" fi if [ ! -f "$bindir""afimonio" ]; then #instalo afimonio porque no existe echo "Instalando Afimonio..." afim=1 cp "$instdir/afimonio" "$bindir/afimonio" 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" 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" 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" 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/\.\*\=\ //` cat<> $CONFFILE echo "CONFDIR = $CONFDIR" >> $CONFFILE for n in `seq 3 51`; do echo "" >> $CONFFILE done exit 0 fi # Comienzo la instalacion de cada componente comandos=`echo $toinstall | sed s%,%" "%g` for comando in $comandos 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" DATADIR="" LOGDIR="${ROOTPATH}/log" LOGFILE="${comando}.log" LOGSIZE="20" if [ "$comando" = "antifraude.pl" ]; then DATADIR="${ROOTPATH}/llamadas" LOGFILE="${comando%.pl}.log" fi # Le muestro los sugeridos y permito cambiar el dir en si, no fullpath! # if cambiaruta "ejecutables" $BINDIR ; then # BINDIR="${ROOTPATH}/$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 Si los datos ingresados son correctos oprima solamente ENTER, si desea modificar alguno de ellos oprima cualquier otra tecla y luego ENTER. MARCA read op done ############## NO DAR BOLA DE ACA HACIA ABAJO ##################### exit 0 linea=10 i=0 fecha=$(date) 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." read op if [ -n "$op" ]; then echo "Proceso de instalación cancelado" exit 0 fi # 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)) # 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/.*= //'` done