Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elvehe en 22 Abril 2015, 02:25 am



Título: bash linux
Publicado por: elvehe en 22 Abril 2015, 02:25 am
Mi problema es que el siguiente programa tarda demasiado en ejecutarse
En este programa busco la cantidad de macs x dia sin repetirse que han accesado al servidor.

¿Como podría optimizarlo?
el codigo es el siguiente
(creo que es lento por la cantidad de archivos que leo linea por linea)



Código
  1. ....
  2. for dia in `ls /bitacora/graficas/salida.$horaConAno-$mes-* | cut -d"." -f2 | cut -d"-" -f3`
  3. do  
  4. ` > archivoDeMacsDiferentes`
  5. cantMacsDife=0
  6. for hora in `ls /bitacora/graficas/salida.*_$ano-$mes-$dia | cut -d"." -f2 | cut -d"_" -f1`  
  7. do
  8.   archivoDeBitacora="/bitacora/graficas/salida."$hora"_"$ano"-"$mes"-"$dia
  9.  
  10.   while read line
  11.   do    
  12.       mac=`echo $line | cut -d" " -f2`        
  13.      macEnArchivodifeDeMacs=`cat archivoDeMacsDiferentes | grep $mac`
  14.           #echo $mac"="$macEnArchivodifeDeMacs "fecfa:"$hora
  15.       if [ -z $macEnArchivodifeDeMacs ]; then #si no existe lo agrego
  16.            cantMacsDife=`expr $cantMacsDife + 1 `
  17.                 `echo $mac>>archivoDeMacsDiferentes`
  18.      fi
  19.   done<$archivoDeBitacora
  20. done
  21. echo "dia:"$dia",TotalPcDiferentes:"$cantMacsDife
  22. done

Mod: los Códigos deben ir en etiquetas GeSHi