Em seu estado atual, sua dúvida não é clara se a máquina local ou a máquina remota é o "cliente". Supondo que você esteja procurando conexões com a porta 80 em máquinas remotas, o seguinte deve obter o que você deseja. Apenas certifique-se do conjunto port=port-number-to-search
antes de executar os comandos ou substitua $port
nos comandos com a porta que você deseja filtrar.
Simple one-liner:
netstat -an | awk '{print $5}' | grep :$port | sort -n | uniq -c | sort -nr
e a saída é assim:
7 198.252.206.25:443 4 74.125.28.189:443 2 74.126.144.69:443 2 65.55.252.167:443 2 52.112.66.238:443
O número se front é a contagem de conexões para esse IP na porta 80.
Pretty print one-liner:
netstat -an | awk '{print $5}' | grep :$port | sort -n | uniq -c | sort -nr | tr ':' ' ' | awk '{printf "client IP: %-15s Port: %-5s Occurred: %s time(s)\n", $2, $3, $1}'
e a saída é assim:
client IP: 198.252.206.25 Port: 443 Occurred: 9 time(s) client IP: 74.126.144.69 Port: 443 Occurred: 2 time(s) client IP: 74.125.28.189 Port: 443 Occurred: 2 time(s) client IP: 34.210.168.7 Port: 443 Occurred: 2 time(s) client IP: 216.58.217.195 Port: 443 Occurred: 2 time(s) client IP: 192.0.73.2 Port: 443 Occurred: 2 time(s)
Editar 2017-06-26
Inicialmente escrevi meus comandos de modo que eles ordenassem por IP. O OP disse que estava interessado em ordenar por frequência, por isso fiz algumas alterações nesse sentido. Você pode notar que o comando sort
é usado antes e depois do comando uniq
. Isso não é um erro. O primeiro sort
garante que o comando uniq
seja capaz de executar seu trabalho. O segundo tipo, é o que realmente faz a classificação por frequência.