Conversor de logs do squid

Publicado por Elgio Schlemer 11/09/2007

[ Hits: 11.848 ]

Homepage: https://profelgio.duckdns.org/~elgio

Download conversorLogSquid.sh




Muitos postaram perguntas no fórum sobre o tempo obscuro registrado nos logs do squid.

Além de explicar o que significa estes números, este script em bash traduz este tempo para algo mais legível.

  



Esconder código-fonte



#!/bin/bash

# ELGIO SCHLEMER
# Conversor de logs no formato ORIGINAL do squid para um tempo mais legivel
# 06/Setembro/2007

# Cores! O mundo eh colorido
cN="{FONTE}33[m"      # normal
cVm="{FONTE}33[1;31m" # vermelho
cVd="{FONTE}33[2;32m" # verde
cAz="{FONTE}33[3;34m" # azul
cAm="{FONTE}33[1;33m" # amarelo

cERRO="${cVm}"
cTEMPO="${cVd}"

# Como voce quer ver o tempo? 
# Descomente a atribuicao da variavel FORM que voce quer

# a) como o date mostra, normal, sem formatacao alguma
# Exemplo: Qui Set  6 19:04:05 BRT 2007
FORM=""

# b) No formato DD/MM/AAAA HH:MM:SS (ex 06/09/2007 19:04:05)
#FORM="+%d/%m/%Y %H:%M:%S"

# c) No formato DD/Mes/AAA HH:MM:SS (ex 06/Setembro/2007 19:04:05)
#FORM="+%d/%B/%Y %H:%M:%S"

# d) No formato Dia, DD de Mes de AAAA as HH:MM:SS 
# (ex: Quinta, 06 de Setembro de 2007 as 19:04:05
FORM="+%a, %d de %B de %Y as %H:%M:%S"

# Onde esta o arquivo de log a ser convertido?
ARQLOG="/var/log/squid/access.log"

# Onde irao as mensagems de erros?
ERRO="/dev/stderr"
# ao enviar ERROS para /dev/stderr estou enviando para a saida padrao de erro
# Muito util se a saida de dados for a tela e se usara este programa como
# um filtro. exemplo: ./conversorLogSquid.sh | sort
# as mensagens de erro NAO SERIAM passadas ao sort!!
# Mas se o usuario passou parametro...

if [ "X$1" != "X" ]
then
        ARQLOG=$1
fi

if [ ! -r $ARQLOG ] || [ ! -f $ARQLOG ]
then
   echo -ne "${cERRO}ERRO! Nao consigo abrir $ARQLOG para leitura${cN}\n" >> $ERRO
   exit 0;
fi

# Onde vai ser a saida?
# a) Saida na tela: sdtout
SAIDA="/dev/stdout"

# b) Saida em um arquivo de mesmo nome, com a extensao CONV
SAIDA="${ARQLOG}.CONV"

if [ -f $SAIDA ]
then
   echo -ne "${cERRO}ERRO: $SAIDA ja existe e eu nao vou apaga-lo!${cN}\n" >> $ERRO
   echo -ne "ABORTADO\n" >> $ERRO
   exit 0
fi 

touch $SAIDA 2>/dev/null

if [ ! -w $SAIDA ]
then
   echo -ne "${cERRO}ERRO: $SAIDA nao pode ser escrito.$cN Vai ser na tela mesmo\n" >> $ERRO
   echo "PRESSIONE ENTER para continuar" >> $ERRO
   read resp
   clear
fi

# Se a saida eh na tela, mundo colorido!!
CorI=""
CorF=""
if [ $SAIDA == "/dev/stdout" ]
then
   CorI="$cTEMPO"
   CorF="$cN"
fi

cat $ARQLOG | while read linha
do
  tempo="`echo $linha|cut -d\. -f1`"
  if `echo "$tempo" | grep -qs "^[0-9]\+$"`
  then 
     legivel="${CorI}`date -d @$tempo "$FORM"`${CorF}"

   #  legivel="`date -d @$tempo "$FORM"`"
     novalinha="$legivel `echo $linha|cut -d' ' -f2-`"
     echo -ne "${novalinha}\n" >> $SAIDA
  else    
     # Nao foi encontrado linha de tempo. Imprimindo como a linha era
     echo $linha >> $SAIDA
  fi
done 

Scripts recomendados

Cadastrando e removendo usuários do SAMBA com um script

Limpar pacotes com versões antigas do cache do apt

Ler partição NTFS

ListPkg [Procura de pacote no Slackware]

ImgMenus


  

Comentários
[1] Comentário enviado por elgio em 11/09/2007 - 09:16h

Oi pessoal.

O script está com caracteres ERRADOS (algum problema de conversão feita pelo VOL) e o download não está funcionando.

Mas no FONTE, onde diz {FONTE} não é isto não!!

Deve ser substituido por \ 0 (contra-barra + Zero, tudo junto, sem espaço. Pus espaço aqui pq é justamente esta sequencia que o VOL transforma)

[2] Comentário enviado por elgio em 11/09/2007 - 09:30h

http://gravatai.ulbra.tche.br/~elgio/conversorLogSquid
Por enquanto...

[3] Comentário enviado por rcjeferson em 23/04/2015 - 11:46h

Muito bom! Parabéns!

Está em meus favoritos.

Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts