Script que conta apenas as conexões Estabelecidas, TIME_WAIT e Closed Wait usando o Netstat

1

Estou tentando fazer um script (usando Perl, mas não é necessário) que contará apenas o número de conexões Estabelecidas, Time_Wait e Closed_Wait em um sistema e as imprimirá no terminal. Até agora descobri que posso usar:

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n

para imprimir todas as conexões, mas quando eu executo isso a partir de um script, ele não imprime no terminal e também me dá algumas conexões que não estou procurando, como Listen e Foreign. A razão pela qual ele deve mostrar apenas Established, Time_Wait e Closed_Wait é porque o script está sendo usado por um programa de monitoramento que falhará se qualquer outro tipo de conexão aparecer. Alguém pode fazer uma sugestão? Obrigado!

    
por monkeychef 21.08.2015 / 16:22

2 respostas

3

Seu script pode ser modificado para processar apenas os estados de que você precisa:

netstat -ant | awk '/ESTABLISHED|LISTEN|CLOSE_WAIT/ {print $6}' | \
    sort | uniq -c | sort -n

Um passo adicional seria tudo com awk , por ex. :

netstat -ant | awk '
/ESTABLISHED|LISTEN|CLOSE_WAIT/ {count[$6]++}
END {
  for(s in count) {
    printf("%12s : %6d\n", s, count[s]);
  }
}'
    
por 21.08.2015 / 16:29
0

Conte as linhas:

netstat -nat | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l

Imprimir apenas essas linhas:

netstat -nat | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT'
    
por 21.08.2015 / 17:06