Conversor de logs do squid
Publicado por Elgio Schlemer 11/09/2007
[ Hits: 12.210 ]
Homepage: https://elgio.prof.nom.br/~elgio
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.
#!/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
Automatizando a geração de relatórios do SARG
Renomear em sequência arquivos de imagens acrescentando a informação do tamanho
Administração básica de usuários no MySQL
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Problema com som no laptop (5)
Quando vocês pararam de testar distros? (11)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









