Autor: @linuxitux
Tomado de Linuxito
#!/bin/bash # apache_access_stats.sh # # Muestra un gráfico de accesos por hora a un servidor Apache a partir de un archivo # de log de accesos # mensaje="Muestra un gráfico de accesos por hora a un servidor Apache a partir de un archivo de log de accesos." # Variables ancho=50 if [ $# -lt 1 ] then printf "Uso: $0 ARCHIVO\n$mensaje\n" exit 1 fi # Defino un arreglo de horas desde 0 a 23 hs=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) # Contabilizo la cantidad de accesos por cada hora for h in $(cat $* | cut -d '[' -f2 | cut -d "]" -f1 | cut -d ' ' -f1 | cut -d ':' -f2 | sed 's/^0//') do (( hs[$h]++ )) done # Calculo la máxima cantidad de accesos max=0 for h2 in ${hs[@]} do if [ "$h2" -gt "$max" ] then max=$h2 fi done # Calculo la longitud de caracteres del máximo longitud=${#max} # Imprimo el gráfico echo "HORA (ACCESOS)" hora="0" for h3 in ${hs[@]} do # Para cada hora # Calculo la cantidad de numerales a imprimir c=$(( h3 * ancho / max )) # Imprimo la hora con formato "HH:MM" if [ $hora == "0" ] then printf " 0" else printf "%2.i" "$hora" fi printf ":00" # Imprimo la cantidad de accesos printf " (%$longitud.i) " "$h3" # Imprimo los numerales for (( i=0; i<$c; i++ )) do printf "#" done echo # Siguiente hora (( hora++ )) done
3 comentarios:
Funciona Exelente.
Funciona Excelente
Hector nos agrada!! :) que te haya servido.. esperamos tus aportes!!!
Publicar un comentario