Script de shell para filtrar endereços IP do arquivo de log

0

Temos um despejo de soquete comum que pedimos a um cliente para executar e fiquei imaginando se a comunidade tinha alguma ideia sobre como identificar vários endereços conectados em uma lista de soquete stat da rede.

Active Internet connections (including servers)
PCB      Proto Recv-Q Send-Q  Local Address      Foreign Address    (state)
-------- ----- ------ ------  ------------------ ------------------ -------
18970e0  TCP        0      0  10.51.57.214.1028     10.51.57.211.20021    ESTABLISHED
1897374  TCP        0      0  10.51.57.214.23       10.51.102.86.58998    ESTABLISHED
18960e4  TCP        0      0  10.51.57.214.1028     10.51.102.48.59466    ESTABLISHED
189747c  TCP        0      0  10.51.57.214.1031     10.51.82.22.63682     ESTABLISHED
18972f0  TCP        0      0  10.51.57.214.1028     10.51.101.72.64318    ESTABLISHED
18969a8  TCP        0      0  10.51.57.214.1028     10.51.102.75.61478    ESTABLISHED
1896e4c  TCP        0      0  10.51.57.214.1028     10.51.102.74.52111    ESTABLISHED
1896924  TCP        0      0  10.51.57.214.1028     10.51.57.232.57303    ESTABLISHED
1896d44  TCP        0      0  10.51.57.214.1028     10.51.57.232.57302    ESTABLISHED
1896ed0  TCP        0      0  10.51.57.214.1028     10.51.57.202.49952    ESTABLISHED
1896cc0  TCP        0      0  10.51.57.214.1028     10.51.57.242.56605    ESTABLISHED
1896b34  TCP        0      0  10.51.57.214.1028     10.51.57.245.49418    ESTABLISHED
1895b38  TCP        0      0  10.51.57.214.1028     10.51.57.245.49402    ESTABLISHED
18958a4  TCP        0      0  10.51.57.214.1028     10.51.57.244.49390    ESTABLISHED
18968a0  TCP        0      0  10.51.57.214.1028     10.51.101.36.60993    ESTABLISHED
1896714  TCP        0      0  10.51.57.214.1028     10.51.82.22.53412     ESTABLISHED
1896ab0  TCP        0      0  10.51.57.214.1028     10.51.57.243.50377    ESTABLISHED
1895ed4  TCP        0      0  10.51.57.214.1113     10.51.57.203.62953    ESTABLISHED
1896a2c  TCP        0     25  10.51.57.214.1028     10.51.57.243.50362    ESTABLISHED
1895bbc  TCP        0      0  10.51.57.214.1028     10.51.57.196.49313    ESTABLISHED
189681c  TCP        0      0  10.51.57.214.1028     10.51.57.101.52556    ESTABLISHED
1896798  TCP        0      0  10.51.57.214.1028     10.51.57.201.53746    ESTABLISHED
1896c3c  TCP        0      0  10.51.57.214.1028     10.51.57.193.51058    ESTABLISHED
1896588  TCP        0      0  10.51.57.214.1028     10.51.57.195.49358    ESTABLISHED
18962f4  TCP        0      0  10.51.57.214.1028     10.51.101.92.59060    ESTABLISHED
1896504  TCP        0      0  10.51.57.214.1028     10.51.57.213.62754    ESTABLISHED
18963fc  TCP        0      0  10.51.57.214.1028     10.51.57.213.62753    ESTABLISHED
1896690  TCP        0      0  10.51.57.214.1052     10.51.57.203.62953    ESTABLISHED
189660c  TCP        0      0  10.51.57.214.1028     10.51.57.241.54348    ESTABLISHED
1896168  TCP        0      0  10.51.57.214.1047     10.51.57.203.62953    ESTABLISHED
1896378  TCP        0      0  10.51.57.214.1031     10.51.57.203.62961    ESTABLISHED
1895f58  TCP        0      0  10.51.57.214.1028     10.51.57.203.62958    ESTABLISHED
1896270  TCP        0      0  10.51.57.214.1028     10.51.57.181.55438    ESTABLISHED

Estou interessado somente nos endereços externos, pois o endereço local é alterado por servidor. Eles são realmente estabelecidos ou tratados como soquetes obsoletos e o switch os tornou órfãos (o que geralmente é a causa de vários soquetes estabelecidos)

Parece que a única maneira de encontrá-los é procurar por uma guia, em seguida, um quad pontilhado, seguido por um número de soquete e, em seguida, uma guia e, em seguida, ESTABLISHED. O logado vem de uma versão antiga do vxworks, então o número do socket não é prefixado por dois pontos, mas podemos assumir que todos os endpoints são maiores que 1024

Não consigo descobrir logicamente a melhor maneira de exibir um conjunto filtrado de endereços IP e classificá-los por número de conexões? Gostaria de ver quais aparecem tem mais de duas conexões simultâneas

Acho que estou bem em deixar o endereço local lá, pois ter 250 conexões estranhas seria logicamente o endereço local!

Muito obrigado

    
por Scott 01.05.2018 / 02:09

1 resposta

1

Você pode usar um script awk para pesquisar os IPs nos dados. coletar cada ocorrência deles em um array counts . Quando a entrada tiver sido lida, percorra a matriz e imprima as contagens e os IPs, mas somente se houver mais de duas ocorrências, canalize tudo para ordenar:

awkscript:

NF == 7 && $7 == "ESTABLISHED" {
  split($6, octets, ".")
  ip=octets[1] "." octets[2] "." octets[3] "." octets[4]
  counts[ip]++
}

END {
  for (i in counts)
    if (counts[i] > 2)
        print counts[i], i
}

Execute como:

awk -f awkscript < input | sort -n

Com a entrada de amostra, apenas um IP é exibido, com 5 ocorrências:

5 10.51.57.203
    
por 01.05.2018 / 02:23