#!/bin/bash BASE_DIR=$HOME/.antifraude # uso las funciones de util.sh . "$HOME/.antifraude/util.sh" . "$HOME/.antifraude/conf/afimonio.conf" . "$HOME/.antifraude/conf/antifraude.conf" # Es llamada por los trap para deslockear el afimonio finalize() { unlock "afimonio" exit 0 } # 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---------------------- # Recupero las rutas a todos los directorios y archivos que necesito # Del antifraude DATADIR=$ANTI_DATADIR SOURCEDIR=$DATADIR/aprocesar/ ACEPTDIR=$DATADIR/enproceso/ REJECTDIR=$DATADIR/rechazadas/ BINDIR=$ANTI_BINDIR # Del afimonio LOGDIR=$AFIM_LOGDIR LOGNAME=$AFIM_LOGFILE LOGFILE=$LOGDIR/$LOGNAME # Capturo seņales para salir bien (liberando el lock) trap "finalize" INT trap "finalize" TERM # Me lockeo lock "afimonio" || die "No se puede correr, hay otra instancia corriendo!" # 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 "$AFIM_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 $BINDIR/antifraude.pl fi sleep 5 done #while