#!/bin/bash # vim: set softtabstop=4 tabstop=4 . inst/util.sh ################# Funciones ########################### # Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto function askDir() { leer ">> Ingrese la ruta para los archivos $1" "$2" 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 instalará [$selected]" preguntar "¿Desea agregar otro componente para instalar?" "SsNn" 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) MARCA # Le pido un rootpath donde se instalara este comando en particular leer ">> Ingrese la ruta de instalación" "$CURRDIR" 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 leer ">> Nombre del archivo de log" "${comando%.pl}.log" LOGFILE if [ -z "$LOGFILE" ]; then LOGFILE="${comando%.pl}.log" fi # Le sugiero un size para el logfile leer ">> Tamaño máximo para el archivo ($LOGFILE) en MB" "200" 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" mkdir -p "$CONFDIR/lock" touch "$LOGDIR/$LOGFILE" if [ $comando = "antifraude.pl" ]; then mkdir -p $DATADIR mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas} mkdir -p $DATADIR/alarmas fi echo ">> Moviendo Archivos....." cp "$INSTDIR/$comando" "$BINDIR" # TODO : no se debe copiar solo 1 vez? cp "$INSTDIR/oridesti.txt" "$CONFDIR" # Guardo los datos en el archivo de configuracion userid=$LOGNAME fecha=$(date +%d/%m/%Y) 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 # Creacion de archivos auxiliares echo "0" > "$CONFDIR/umbrales.id" # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema showInstalled