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