Analisar log Squid
Publicado por Gustavo Hendrigo Marcon (última atualização em 01/10/2009)
[ Hits: 9.471 ]
Homepage: -
Script que lista os 10 IPs que mais consumiram banda em uma certa data.
Para executar o script:
./logsquidia.sh 20090928
Ou seja, data no formato: AAAAMMDD
#!/bin/bash
#-------------------------#
# Gustavo Hendrigo Marcon #
# ARL208004 #
# Automação de tarefas #
#-------------------------#
#----- Testa se foi passada os parâmetros -------------------#
if [ $# -ne 2 ]
then
echo
echo "Digite: $0 a data e o caminho do arquivo de log ."
echo "Exemplo: $0 20090901 /home/hendrigo/access.log"
exit
fi
#------------------------------------------------------------#
#----- Filtra os 8 caracteres referente a data ----#
data=$(echo $1|egrep '^([0-9]{8})')
#--------------------------------------------------#
#----- Atribui as variáveis -----#
ano=$(echo $data|cut -c1-4)
mes=$(echo $data|cut -c5-6)
dia=$(echo $data|cut -c7-8)
#--------------------------------#
#----- Data a ser filtrada com hora inicial 00:00 -----#
data_ini=$(date -d "$ano-$mes-$dia" "+%s")
#------------------------------------------------------#
# ---- Data a ser filtrada com hora inicial 23:59 ---- #
data_fim=$(date -d "$ano-$mes-$dia 23:59:59" "+%s")
#------------------------------------------------------#
#------------ Valida a quantidade de Dígitos ----------#
if [ "$data" == "" ]
then echo "Data deve ter 8 digitos"
#------------------------------------------------------#
#------------------ Valida ano ------------------------#
elif [ "$ano" -le 2000 -o "$ano" -ge 2010 ]
then echo "$ano não é ano válido!"
#------------------------------------------------------#
#------------------ Valida mês ------------------------#
elif [ "$mes" -le 0 -o "$mes" -ge 13 ]
then echo "$mes não é mes válido"
#------------------------------------------------------#
#------------------ Valida dia ------------------------#
elif [ "$dia" -le 0 -o "$dia" -ge 32 ]
then echo "$dia não é dia válido"
#------------------------------------------------------#
#--------------- Verifica acess.log -------------------#
elif [ ! -f "$2" ]
then echo " $2 não é um arquivo ou não existe"
#------------------------------------------------------#
#--------- Verifica permisao em acess.log -------------#
elif [ ! -r "$2" ]
then echo " Você não tem permissao de leitura em $2"
#------------------------------------------------------#
# ------------------ Se todos parâmetros foram validados, executar --------------------------------------------- #
else
echo "Processando ..."
{
# Lista os ips que tiveram acesso durante o periodo, exemplo seguido da pag 81 da apostila #
ips=$( awk -F" " '$1 >= '$data_ini' && $1 <= '$data_fim' {print $3}' $2 | awk 'BEGIN { } {
for (palavra = 1; palavra <= NF; palavra ++)
quantidade [$palavra] ++
}
END {
for (palavra in quantidade)
print palavra
}' | sort )
# ----------------------------- Fim da atribuicao ips ------------------------------------ #
echo
echo "========================================================="
for i in $ips
do
# ---- Fitra data e soma os downloads de cada ip, e imprime o resultado ---- #
awk -F" " '$1 >= '$data_ini' && $1 <= '$data_fim' {print $1,$2,$3}' $2 | grep -w $i | awk -F" " 'BEGIN { } {
downloads += $2; ip= $3;
}
END {
printf "%1s %15s %2s %15s %2s %11.3f %2s %2s\n", "|", ip , "|", downloads, "|", expr downloads / 1000000 , "MB", "|"
}'
done | sort -k4 -n | tail -10
# ---- Se não for encontrado nenhum acesso na data especificada ---- #
if [ "$ips" == "" ]
then echo "Nenhum acesso na data: $1"
fi
echo "========================================================="
echo "| IP | Em Bytes | Em MBytes |"
echo "| |------------------------------------|"
echo "| TOP 10, HOSTS | TOTAL DE DOWNLOADS |"
echo "========================================================="
echo
}|tac
#-------------------------------- Fim do if ---------------------------------------------------------------------#
fi
Fluxbox: Wallpapers aleatórios
Removendo carácter especial de arquivos recursivamente
Gerenciamento do Samba com Dialog
Automação para midias removíveis
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









