sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk '{"geoiplookup "$2" | egrep -o Country.*[A-Z]{2}" | getline line; split(line,a," "); print $1, a[3], $2}'
Para verificar quantos IPs estão conectados ao meu servidor, eu uso o comando da seguinte forma.
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
Exibir IPs exclusivos na segunda coluna e o número de vezes que esse IP solicitou o Nginx, como:
23 123.45.6.8
3 34.56.78.4
1 8.9.4.3
Eu quero ter uma terceira coluna com a localização deste IP. Para isso eu uso geoiplookup
.
Exemplo de saída:
23 123.45.6.8 Netherlands
3 34.56.78.4 England
1 8.9.4.3 Netherlands
Exemplos de geoiplookup
output:
GeoIP Country Edition: US, United States
#or
GeoIP Country Edition: FR, France
Portanto, uma divisão em "," é suficiente.
Como posso transformar a saída precedente para ter a localização na terceira coluna na linha one ?
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk '{"geoiplookup "$2" | egrep -o Country.*[A-Z]{2}" | getline line; split(line,a," "); print $1, a[3], $2}'
Tags text-formatting columns