Conversor de logs do squid
Publicado por Elgio Schlemer 11/09/2007
[ Hits: 12.178 ]
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
Compactação do relatório do Squid/Sarg
[ResuLinux] Discador Claro 3G em dialog
Instalador de programas no Ubuntu
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (15)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









