]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blob - inst/afimonio
trunco si se pasa de tamaño el log
[z.facultad/75.08/llamadas.git] / inst / afimonio
1 #!/bin/bash
2 # uso las funciones de util.sh
3 . "$HOME/.antifraude/util.sh"
4 . "$HOME/.antifraude/conf/afimonio.conf"
5
6 trap "finalize" INT
7
8 # Es llamada por los trap para deslockear el afimonio 
9 finalize() {
10         unlock "afimonio" 
11 }
12
13 # filtra el nombre del archivo pasado por parametro sacandole todos los
14 # caracteres que no sean numeros 
15 checkfilename(){
16         date=`echo $1 | cut -d "." -f 1`
17         central=`echo $1 | cut -d "." -f 2`
18
19         validar_solo_numeros "$date"
20         if [ "$?" -ne 0 ]; then
21                 return 1
22         fi
23         mes=${date:4:2}
24         validar_rango "$mes" "1" "12"
25         if [ "$?" -ne 0 ]; then
26                 return 1
27         fi
28         dia=${date:6:2}
29         validar_rango "$dia" "1" "31" 
30         if [ "$?" -ne 0 ]; then
31                 return 1
32         fi
33         hora=${date:8:2}
34         validar_rango "$hora" "0" "23"
35         if [ "$?" -ne 0 ]; then
36                 return 1
37         fi
38         min=${date:10:2}
39         validar_rango "$min" "0" "59"
40         if [ "$?" -ne 0 ]; then
41                 return 1
42         fi
43         validar_solo_numeros "$central"
44         if [ "$?" -ne 0 ]; then
45                 return 1
46         fi
47         return 0                
48 }
49
50 #--------------------MAIN SCRIPT----------------------
51
52 # Verifico no correr 2 veces
53 if is_lock "afimonio" ; then
54         echo "Ya hay una instancia de afimonio corriendo"
55         exit 1
56 fi
57
58 # Me lockeo por las dudas
59 lock "afimonio" 
60
61 # Busco el archivo de configuracion para recuperar las rutas hacia los archivos
62 # que debo leer.
63
64 anticonf=~/.antifraude/conf/antifraude.conf
65 afimconf=~/.antifraude/conf/afimonio.conf
66
67 # Recupero las rutas a todos los directorios y archivos que necesito
68 # Del antifraude
69 DATADIR=`grep -n "DATADIR" $anticonf | sed "s?.*DATADIR\ =\ ??"`
70 SOURCEDIR="$DATADIR/aprocesar/"
71 ACEPTDIR="$DATADIR/enproceso/"
72 REJECTDIR="$DATADIR/rechazadas/"
73 BINDIR=`grep -n "BINDIR" $anticonf | sed  "s?.*BINDIR\ =\ ??"`
74
75 # Del afimonio
76 LOGDIR=`grep -n "LOGDIR" $afimconf | sed "s?.*LOGDIR\ =\ ??"`
77 LOGNAME=`grep -n "LOGFILE" $afimconf | sed "s?.*LOGFILE\ =\ ??"`
78 LOGFILE=$LOGDIR/$LOGNAME
79
80 # Comienza el ciclo infinito que mueve los archivos
81 while [ true ]; do 
82         for file in `ls $SOURCEDIR` ; do
83                 checkfilename $file     
84                 if [ "$?" -eq 0 ]; then
85                         mv $SOURCEDIR$file $ACEPTDIR #cambiar copiar por mover
86                         fecha=$(date +%d/%m/%Y-%H:%M)
87                         echo "$fecha $USER afimonio:\"Se detecta archivo de llamadas $file\"" >> $LOGFILE
88                 else 
89                         mv $SOURCEDIR$file $REJECTDIR #cambiar copiar por mover
90                         fecha=$(date +%d/%m/%Y-%H:%M)
91                         echo "$fecha $USER afimonio:\"Se rechaza el  archivo $file\"" >> $LOGFILE
92                 fi
93                 # Verifico que el logfile no se pase del tamaño maximo
94                 tam=`stat -c '%s' $LOGFILE`
95                 # Si se paso del maximo dejo las ultimas 100 lineas
96                 if [ "$tam" -ge "$LOGSIZE" ]; then
97                         tail -n 100 $LOGFILE > "$BINDIR/temp"   
98                         rm $LOGFILE
99                         mv "$BINDIR/temp" $LOGFILE
100                 fi
101         done #for
102         # me fijo si el antifraude esta corriendo y si no lo esta lo arranco
103         if ! is_lock "antifraude.pl" ; then
104                 echo "DISPARANDO ANTIFRAUDE"
105                 $BINDIR/antifraude.pl
106         fi
107         break
108         # sleep 60
109 done #while 
110