Idéias para analisar os resultados do netstat para conexões ativas

1

Eu tenho vários dispositivos remotos que criam conexões ssh reversas de volta ao meu servidor, para que eu ssh para eles e gerencie-os remotamente. Eles se conectam de volta a mim por meio de uma porta personalizada. Quando faço um netstat -an | grep 127.0.0.0.1: no meu servidor, obtenho uma lista de dispositivos atualmente conectados. A saída é assim:

tcp        0      0 127.0.0.1:6001          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6002          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6003          0.0.0.0:*               LISTEN

Onde 600x é a porta em que o dispositivo está conectado. Minha pergunta é essa. Eu quero fazer um script que eu possa executar no meu servidor que mostra quais dispositivos estão conectados. Eu quero ter o arquivo de configuração que o script iria ler que lista meus dispositivos assim:

NORTH:6001

SOUTH:6002

EAST:6003

WEST:6004

e o script analisaria a saída do comando netstat e a saída ficaria assim:

Conexões ativas: NORTE, SUL, LESTE

Conexões inativas: WEST

Espero que isso não seja muito confuso. Isso é algo que pode ser feito com grep e awk?

    
por Randy Adams 08.03.2017 / 17:05

1 resposta

1

Existem três etapas aqui

  1. Apenas extraia nomes de portas ativos do netstat

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}'

o awk especifica o grupo de espaços e dois pontos como separadores e seleciona apenas o id da porta.

  1. Compare essas portas do arquivo de lista de dispositivos (digamos, denominado device_list.txt ), usando grep e output do comando na etapa 1 como padrão

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt

Isso gerará uma saída como essa

NORTH:6001
SOUTH:6002
EAST:6003
  1. As conexões inativas podem ser obtidas usando -v no grep

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt

A saída disso é

WEST:6004

Você pode, então, criar um script em torno do texto acima para imprimir em qualquer formato que desejar

    
por 08.03.2017 / 19:01