Conversor de logs do squid
Publicado por Elgio Schlemer 11/09/2007
[ Hits: 12.236 ]
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
Quantidade de emails enviados e recebidos
Script para desmontar partição/unidade
Script para monitorar os 10 processos que mais consomem CPU e Memória
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Instalar Linux em notebook Sony Vaio VPCEG13EB (10)
Vou destruir sua infância:) (6)
Quando vocês pararam de testar distros? (24)









