Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elvehe en 20 Abril 2015, 20:59 pm



Título: como procesar archivos en linux
Publicado por: elvehe en 20 Abril 2015, 20:59 pm
mi pregunta es: ¿Como leer archivos de bitacora del servidor que se en encuentran en /bitacora/graficas?
El problemas es que son muchos archivos y necesito acer varios programas en el que debo de procesar cada linea.(por ejemplo las Ip en cierto rango sin repetirse).
Entonces al ejecutar mi bash tarda demasiado.
Si hay alguna forma de recorrer todos estos archivos mas rapido quisiera saberlo.

Por ejemplo uno de lo programas :
buscar la cantidad de macs x dia sin repetirse que han accesado al servidor


Título: Re: como procesar archivos en linux
Publicado por: engel lex en 20 Abril 2015, 23:59 pm
exactamente cómo es el asunto?

que es lo que lo hace lento?



Título: Re: como procesar archivos en linux
Publicado por: daryo en 21 Abril 2015, 03:22 am
intenta con python u si quieres mas velocidad c/c++ u  otro lenguaje


Título: Re: como procesar archivos en linux
Publicado por: explorer en 21 Abril 2015, 18:36 pm
Si pones un ejemplo pequeño de lo que quieres hacer, te damos la solución  ;)


Título: Re: como procesar archivos en linux
Publicado por: elvehe en 21 Abril 2015, 21:55 pm
En este programa busco la cantidad de macs x dia sin repetirse que han accesado al servidor.
el codigo es el siguiente
(creo que es lento por la cantidad de archivos que leo linea por linea)

....
for dia in `ls /bitacora/graficas/salida.$horaConAno-$mes-* | cut -d"." -f2 | cut -d"-" -f3`
do  
 ` > archivoDeMacsDiferentes`
 cantMacsDife=0
 for hora in `ls /bitacora/graficas/salida.*_$ano-$mes-$dia | cut -d"." -f2 | cut -d"_" -f1`  
 do
   archivoDeBitacora="/bitacora/graficas/salida."$hora"_"$ano"-"$mes"-"$dia

   while read line
   do    
       mac=`echo $line | cut -d" " -f2`        
      macEnArchivodifeDeMacs=`cat archivoDeMacsDiferentes | grep $mac`
           #echo $mac"="$macEnArchivodifeDeMacs "fecfa:"$hora
       if [ -z $macEnArchivodifeDeMacs ]; then #si no existe lo agrego
            cantMacsDife=`expr $cantMacsDife + 1 `
                 `echo $mac>>archivoDeMacsDiferentes`
      fi
   done<$archivoDeBitacora
 done
 echo "dia:"$dia",TotalPcDiferentes:"$cantMacsDife
done


Título: Re: como procesar archivos en linux
Publicado por: explorer en 23 Abril 2015, 04:50 am
¿Puedes publicar un ejemplo, unas pocas líneas, de cómo son los archivos de entrada?

Falsea los datos sensibles, como los de las MAC. Solo nos interesa el formato del archivo.