grep intervalo de portas regex do netstat

2

Na minha saída netstat, quero extrair o intervalo de portas entre 32000-64000 . Eu tentei egrep "^[3,4,5,6]" , mas preciso começar a partir de 32000 . Devo usar awk ou algum tipo de script?

Linux# netstat -nau
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 10.0.0.20:55238      0.0.0.0:*
udp        0      0 10.0.0.20:55240      0.0.0.0:*
udp        0      0 10.0.0.20:31242      0.0.0.0:*
udp        0      0 10.0.0.20:55244      0.0.0.0:*
udp        0      0 10.0.0.20:32246      0.0.0.0:*
udp        0      0 10.0.0.20:55248      0.0.0.0:*
udp        0      0 10.0.0.20:12250      0.0.0.0:*
udp        0      0 10.0.0.20:19252      0.0.0.0:*
    
por Satish 06.07.2017 / 20:37

2 respostas

1
Solução

awk :

netstat -nau | awk -F'[[:space:]]+|:' 'NR>2 && $5>=32000 && $5<=64000'

A saída no seu caso seria como:

udp        0      0 10.0.0.20:55238      0.0.0.0:*
udp        0      0 10.0.0.20:55240      0.0.0.0:*
udp        0      0 10.0.0.20:55244      0.0.0.0:*
udp        0      0 10.0.0.20:32246      0.0.0.0:*
udp        0      0 10.0.0.20:55248      0.0.0.0:*
  • -F'[[:space:]]+|:' - separador de campos

  • NR>2 && $5>=32000 && $5<=64000 - verifica se o número da porta está no intervalo necessário

Solução alternativa egrep :

netstat -nau | egrep ':(3[2-9]|[45][0-9])[0-9]{3}|6[0-3][0-9]{3}|64000'
  • (3[2-9]|[45][0-9])[0-9]{3} - abrangerá números de 32000 a 59999

  • 6[0-3][0-9]{3}|64000 - abrangerá números de 60000 a 64000

por 06.07.2017 / 20:46
1

Como netstat está obsoleto, por que não tentar seu sucessor superior, ss .

ss -nau '( sport >= 32000 and sport <= 64000 )'
    
por 06.07.2017 / 23:18