Contar e ordenar a quantidade de ocorrências de cada linha em um arquivo

Publicado por Fábio Berbert de Paula em 26/09/2019

[ Hits: 6.699 ]

Blog: https://fabio.automatizando.dev

 


Contar e ordenar a quantidade de ocorrências de cada linha em um arquivo



Problema

Eu precisava levantar quais eram os IPs que mais estavam acessando meu servidor web e como fonte de dados usei o arquivo access.log do NGinx.

Solução

Uma linha de log do NGinx tem o seguinte formato:

201.xx.157.10 - - [24/Sep/2019:12:48:59 -0300] "GET /imagens/banners/udemy-cert.png HTTP/1.1" 200 26546 ".../artigo/Linux-no-Pendrive-Definitivamente-configuravel-e-persistente?pagina=2" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

O dado que eu preciso é o primeiro campo, o IP do usuário. Então vamos criar um segundo arquivo de log com apenas o primeiro campo de cada entrada:

cat access.log | cut -d ' ' -f 1 > ip_log.txt

Foi criado um arquivo chamado ip_log.txt com o seguinte formato:

18.184.94.52
54.83.152.140
52.58.160.43
3.86.142.166
35.158.131.185
46.229.168.145
18.185.28.42
3.120.174.144
3.123.35.240

Quero fazer o levantamento de quantas vezes cada IP acessou o site neste dia. Para isso vamos usar o comando sort combinado com uniq:

sort ip_log.txt | uniq -c | sort -bnr

A saída será algo como:

   9220 23.100.232.233
   2671 18.231.162.74
   2668 18.229.142.235
   2223 18.228.188.56
   2178 52.67.166.246


Até a próxima!

Outras dicas deste autor

Permitir mudança de senha via SSH (e só!)

Como instalar o Docker no Debian 9 Stretch

Como ouvir rádios online via terminal

DBeaver - Ferramenta de Administração de Banco de Dados

Como fazer print() sem quebra de linha em Python

Leitura recomendada

Resolvendo problema com scripts que estão rodando no crontab

Comando "sed" com parâmetro que aceita barra " / "

Exercício Prático LPIC 06

SED - salvar resultados em novo arquivo

Aulas Shell Script do zero - Parte 1

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts