X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/ccbcdc2380f6183e5cd8a8ad35074766434c472c..bfe87f09077134e3d4883eb2755847509b0aa2a1:/afinstal?ds=sidebyside diff --git a/afinstal b/afinstal index dd192b5..10b8dca 100755 --- a/afinstal +++ b/afinstal @@ -15,23 +15,27 @@ function askDir() { # 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 'afinsmac$'; then - SCRIPTOS="Mac" - fi - if echo $0 | egrep -q 'afinstaw$'; then - SCRIPTOS="Windows" - fi - - if [ "$SISOPTP" != "$SCRIPTOS" ]; then + CURSIS="$1" + SCRIPTOS="un sistema desconocido" + case "$0" in + *afinstal) + SCRIPTOS="Linux" + ;; + *afinsmac) + SCRIPTOS="Mac" + ;; + *afinstaw) + SCRIPTOS="Windows" + ;; + esac + if [ "$CURSIS" != "$SCRIPTOS" ]; then cat< "$1" + # Si no se puede crear archivos, muero + [ -w . ] || die "No se puede escribir en el directorio actual" 100 + tmp="$0.$$.tmp" + sed "${2}s%.*%$3%" > "$tmp" < "$1" + mv "$tmp" "$1" } # Mensaje generico de abort @@ -81,7 +91,7 @@ MARCA echo "* Aficonf instalado el $fechaconf por $userconf" fi if [ "$havemonio" -eq 1 ]; then - echo "* Afimonio instalado el $fechaconf por $usermonio" + echo "* Afimonio instalado el $fechamonio por $usermonio" fi cat <> Verificando version del software contra el OS.." -checkOS +echo -n ">> Verificando version del software contra el OS... " +checkOS "$SISOPTP" if [ "$?" -ne 0 ]; then abortMessage exit 1 fi -echo ">> Verificando la existencia de PERL.." -checkPerl -if [ "$?" -ne 0 ]; then - abortMessage - exit 1 -fi +echo 'OK!' echo ">> Proceso de instalacion para $SISOPTP iniciado." echo ">> Presione ENTER para continuar" read key @@ -206,35 +229,35 @@ done # [STEP3] Chequeamos si hay componentes ya instalados 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.%%` + 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%.*= %%'` + 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" else havemonio=1 - usermonio=`grep -n "USERID" "$CONFFILE" | grep 35 | sed 's%.*= %%'` - fechamonio=`grep -n "FECINS" "$CONFFILE" | grep 36 | sed 's%.*= %%'` + usermonio=`grep -n "USERID" "$CONFFILE" | grep '^35' | sed 's%.*= %%'` + fechamonio=`grep -n "FECINS" "$CONFFILE" | grep '^36' | sed 's%.*= %%'` fi if [ ! -f "${dirconf}/$binconf" ]; then choices="${choices} AFICONF" else haveconf=1 - userconf=`grep -n "USERID" "$CONFFILE" | grep 25 | sed 's%.*= %%'` - fechaconf=`grep -n "FECINS" "$CONFFILE" | grep 26 | sed 's%.*= %%'` + userconf=`grep -n "USERID" "$CONFFILE" | grep '^25' | sed 's%.*= %%'` + fechaconf=`grep -n "FECINS" "$CONFFILE" | grep '^26' | sed 's%.*= %%'` fi if [ ! -f "${dirfraude}/$binfraude" ]; then choices="${choices} ANTIFRAUDE" else havefraude=1 - userfraude=`grep -n "USERID" "$CONFFILE" | grep 17 | sed 's%.*= %%'` - fechafraude=`grep -n "FECINS" "$CONFFILE" | grep 18 | sed 's%.*= %%'` + userfraude=`grep -n "USERID" "$CONFFILE" | grep '^17' | sed 's%.*= %%'` + fechafraude=`grep -n "FECINS" "$CONFFILE" | grep '^18' | sed 's%.*= %%'` fi choices=${choices% } choices=${choices# } @@ -245,6 +268,7 @@ fi # [STEP4] Seleecion de los componentes a instalar # TODO: tener en cuenta los que ya estan y no permitir elegirlos if [ -z "$choices" ]; then + askDaemon showInstalled abortMessage exit 0 @@ -261,6 +285,15 @@ if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then echo "" >> $CONFFILE done fi +if [ ! -f "$OWNCONFDIR" ]; then + mkdir -p "$OWNCONFDIR" +fi +if [ ! -f "$OWNCONFDIR/lock" ]; then + mkdir -p "$OWNCONFDIR/lock" +fi +if [ ! -f "$OWNCONFDIR/conf" ]; then + mkdir -p "$OWNCONFDIR/conf" +fi # Comienzo la instalacion de cada componente comandos=`echo $toinstall | sed s%,%" "%g` @@ -271,6 +304,16 @@ do # Directorios FIJOS para todos los componentes clear + if [ "$comando" = "antifraude.pl" ]; then + echo -n ">> Verificando la existencia de PERL... " + checkPerl + if [ "$?" -ne 0 ]; then + abortMessage + exit 1 + fi + echo 'OK!' + fi + cat <. @@ -283,10 +326,19 @@ do 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 + is_writeable=0 + while [ $is_writeable -eq 0 ]; do + leer ">> Ingrese la ruta de instalación" "$CURRDIR" userpath + if [ -n "$userpath" ]; then + ROOTPATH=$userpath + if [ -w "${userpath%/*}" ]; then is_writeable=1 + else echo ">> ERROR: No es posible crear dicho directorio" + fi + else + ROOTPATH="$CURRDIR" + is_writible=1 + fi + done # preparlos los dirs que voy a sugerir BINDIR="${ROOTPATH}/bin" @@ -354,50 +406,77 @@ MARCA 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 + 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" + chmod u+x "$BINDIR/$comando" + if [ "$comando" = "afimonio" ]; then + cp "$INSTDIR/afimonio_daemon.sh" "$BINDIR" + chmod u+x "$BINDIR/afimonio_daemon.sh" + fi - # TODO : no se debe copiar solo 1 vez? - cp "$INSTDIR/oridesti.txt" "$CONFDIR" + # Copio umbrales, oridesti y utilities una sola vez + if [ ! -f "$OWNCONFDIR/oridesti.txt" ]; then + cp "$INSTDIR/oridesti.txt" "$OWNCONFDIR" + fi + if [ ! -f "$OWNCONFDIR/umbrales.param" ]; then + cp "$INSTDIR/umbrales.param" "$OWNCONFDIR" + fi + if [ ! -f "$OWNCONFDIR/umbrales.id" ]; then + echo 0 >> "$OWNCONFDIR/umbrales.id" + fi + if [ ! -f "$OWNCONFDIR/util.sh" ]; then + cp "$INSTDIR/util.sh" "$OWNCONFDIR" + fi # Guardo los datos en el archivo de configuracion + ownconffile="$OWNCONFDIR/conf/${comando%.pl}.conf" + if [ -f "$ownconffile" ]; then + rm -rf "$ownconffile" + fi userid=$LOGNAME fecha=$(date +%d/%m/%Y) case $comando in "afimonio" ) numline=30; havemonio=1; usermonio=$userid; - fechamonio=$fecha;; + fechamonio=$fecha; + prefix="AFIM";; "aficonf" ) numline=20; haveconf=1; userconf=$userid; - fechaconf=$fecha;; + fechaconf=$fecha; + prefix="AFIC";; "antifraude.pl" ) numline=10; havefraude=1; userfraude=$userid; - fechafraude=$fecha;; - esac + fechafraude=$fecha; + prefix="ANTI";; + esac changeLine "$CONFFILE" "$numline" "Comando $comando" numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR" + echo "${prefix}_BINDIR=\"$BINDIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR" + echo "${prefix}_LOGDIR=\"$LOGDIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE" + echo "${prefix}_LOGFILE=\"$LOGFILE\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE" + echo "${prefix}_LOGSIZE=$LOGSIZE" >> $ownconffile numline=$(($numline+1)) if [ "$comando" = "antifraude.pl" ]; then changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR" + echo "${prefix}_DATADIR=\"$DATADIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "DATASIZE = " numline=$(($numline+1)) @@ -405,12 +484,13 @@ MARCA changeLine "$CONFFILE" "$numline" "USERID = $userid" numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "FECINS = $fecha" + echo ">> Instalación del componente $comando completada" + echo ">> Presione ENTER para continuar" + read done -# Creacion de archivos auxiliares -echo "0" > "$CONFDIR/umbrales.id" - # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados +askDaemon # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema showInstalled