Eu sempre usei isso:
tail -1000 /var/log/apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1
Com tail
eu sou capaz de definir o limite de quão longe eu realmente quero ir - bom se você não usar a rotação de log (por qualquer motivo), segundo eu estou fazendo uso de awk
- uma vez que a maioria dos logs são delimitados por espaço, deixei-me com a capacidade de extrair informações adicionais (possivelmente quais URLs eles estavam atingindo, status, navegadores, etc.) adicionando a variável $
apropriada. Por fim, uma falha em uniq
só funciona em pares - IE:
A
A
A
A
B
A
A
produzirá:
4 A
1 B
2 A
Não é a saída desejada. Então, classificamos a primeira coluna (neste caso, os ips, mas podemos classificar outras colunas) e, em seguida, uniq
, finalmente classificamos a contagem ascendente para que possamos ver os maiores infratores.