#!/bin/bash # uso las funciones de util.sh . "$HOME/.antifraude/util.sh" . "$HOME/.antifraude/conf/afimonio.conf" trap "finalize" INT # Es llamada por los trap para deslockear el afimonio finalize() { unlock "afimonio" } # filtra el nombre del archivo pasado por parametro sacandole todos los # caracteres que no sean numeros checkfilename(){ date=`echo $1 | cut -d "." -f 1` central=`echo $1 | cut -d "." -f 2` validar_solo_numeros "$date" if [ "$?" -ne 0 ]; then return 1 fi mes=${date:4:2} validar_rango "$mes" "1" "12" if [ "$?" -ne 0 ]; then return 1 fi dia=${date:6:2} validar_rango "$dia" "1" "31" if [ "$?" -ne 0 ]; then return 1 fi hora=${date:8:2} validar_rango "$hora" "0" "23" if [ "$?" -ne 0 ]; then return 1 fi min=${date:10:2} validar_rango "$min" "0" "59" if [ "$?" -ne 0 ]; then return 1 fi validar_solo_numeros "$central" if [ "$?" -ne 0 ]; then return 1 fi return 0 } #--------------------MAIN SCRIPT---------------------- # Verifico no correr 2 veces if is_lock "afimonio" ; then echo "Ya hay una instancia de afimonio corriendo" exit 1 fi # Me lockeo por las dudas lock "afimonio" # Busco el archivo de configuracion para recuperar las rutas hacia los archivos # que debo leer. anticonf=~/.antifraude/conf/antifraude.conf afimconf=~/.antifraude/conf/afimonio.conf # Recupero las rutas a todos los directorios y archivos que necesito # Del antifraude DATADIR=`grep -n "DATADIR" $anticonf | sed "s?.*DATADIR\ =\ ??"` SOURCEDIR="$DATADIR/aprocesar/" ACEPTDIR="$DATADIR/enproceso/" REJECTDIR="$DATADIR/rechazadas/" BINDIR=`grep -n "BINDIR" $anticonf | sed "s?.*BINDIR\ =\ ??"` # Del afimonio LOGDIR=`grep -n "LOGDIR" $afimconf | sed "s?.*LOGDIR\ =\ ??"` LOGNAME=`grep -n "LOGFILE" $afimconf | sed "s?.*LOGFILE\ =\ ??"` LOGFILE=$LOGDIR/$LOGNAME # Comienza el ciclo infinito que mueve los archivos while [ true ]; do for file in `ls $SOURCEDIR` ; do checkfilename $file if [ "$?" -eq 0 ]; then mv $SOURCEDIR$file $ACEPTDIR #cambiar copiar por mover fecha=$(date +%d/%m/%Y-%H:%M) echo "$fecha $USER afimonio:\"Se detecta archivo de llamadas $file\"" >> $LOGFILE else mv $SOURCEDIR$file $REJECTDIR #cambiar copiar por mover fecha=$(date +%d/%m/%Y-%H:%M) echo "$fecha $USER afimonio:\"Se rechaza el archivo $file\"" >> $LOGFILE fi # Verifico que el logfile no se pase del tamaņo maximo tam=`stat -c '%s' $LOGFILE` # Si se paso del maximo dejo las ultimas 100 lineas if [ "$tam" -ge "$LOGSIZE" ]; then tail -n 100 $LOGFILE > "$BINDIR/temp" rm $LOGFILE mv "$BINDIR/temp" $LOGFILE fi done #for # me fijo si el antifraude esta corriendo y si no lo esta lo arranco if ! is_lock "antifraude.pl" ; then echo "DISPARANDO ANTIFRAUDE" $BINDIR/antifraude.pl fi break # sleep 60 done #while