Imprime portas com o aplicativo usando-o

0

Eu quero imprimir dois campos juntos, todas as portas abertas e o aplicativo usando. Este é o meu comando, mas ele só imprime os números de porta e ainda está faltando o campo do programa:

netstat -lnt -u -p | awk '{print $4}' | sed 's/.*://' | sort -n | uniq

Como posso modificar isso para imprimir também o nome do programa como em "nome do programa / PID" retornará "java"

Uma amostra de " netstat -lnt -u -p " é assim:

tcp, 0, 0, 10.194.194.21:36195, 0.0.0.0:*, LISTEN, 2969 / java

E eu quero ver apenas o número da porta e o nome do programa:

 36195 java
    
por Spring 17.08.2017 / 11:37

2 respostas

1

Solução abreviada:

netstat -lpunt | awk -F' +|:+|/' '$5{print $5,$10}' | sort -n
  • -F' +|:+|/' - separador de campos (espaço (s), dois pontos (s) ou barra)

  • $5 - número da porta

  • $10 - nome do programa

por 17.08.2017 / 12:02
2

Você precisa imprimir o 6º campo e o 4º

Isso deve retornar o que você esperava ter. (como eu não sei o resultado do comando e certamente haverá uma maneira mais eficiente).

netstat -lnt -u -p | awk '{print $4,$6}' | sed 's/.*://' | sort -n | uniq

Aqui está a maneira de obter a única porta e o programName (nenhum comando extra sed é necessário e sort pode uniqe com sua opção -u ):

netstat -lnt -u -p | awk -F"[,:/]" '{print $5,$NF}'| sort -un
36195  java
    
por 17.08.2017 / 11:49