#!/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<> 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 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 sugieron 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 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