Como listar todas as conexões de rede atuais para um determinado PID?

5

Se eu tiver um PID, como posso encontrar todas as conexões abertas para esse processo? Eu tentei com

netstat | grep $PID 

mas isso não parece funcionar. Preciso de um comando que leve o PID e imprima todas as conexões de rede abertas, mas não tenho ideia de como. Eu tenho visto em outras formas sobre Strace, mas isso não faz sentido para mim.

    
por John 28.06.2017 / 19:19

3 respostas

4

com lsof :

lsof -ai -p "$pid"

Se você não for root , só conseguirá isso para seus processos.

Tecnicamente, isso é apenas para os sockets internet (conectados ou não).

Se você quiser todas as conexões estabelecidas (ou associações), internet ou não (como para sockets de domínio Unix), você pode tentar (pelo menos no Linux e com lsof 4.89):

lsof  -Ep "$pid" | grep -e '(ESTABLISHED)$' -e '->INO=.* '

Por exemplo, para o processo que uso para escrever esta resposta, isso dá:

firefox 6261 chazelas    3u     unix 0xffff88026785d000       0t0   741948 type=STREAM ->INO=743009 4244,dbus-daem,58u
firefox 6261 chazelas    4u     unix 0xffff88017194c000       0t0   741280 type=STREAM ->INO=742999 3575,Xorg,57u
firefox 6261 chazelas    6u     unix 0xffff8802f544d400       0t0   743000 type=STREAM ->INO=741281 4244,dbus-daem,56u
firefox 6261 chazelas   11u     unix 0xffff8802f544e800       0t0   743004 type=STREAM ->INO=737278 4167,cinnamon-,21u
firefox 6261 chazelas   14u     unix 0xffff8801474b3c00       0t0   737279 type=STREAM ->INO=737280 6261,firefox,15u
firefox 6261 chazelas   15u     unix 0xffff8801474b7c00       0t0   737280 type=STREAM ->INO=737279 6261,firefox,14u
firefox 6261 chazelas   34u     unix 0xffff8801d0d01800       0t0   741294 type=STREAM ->INO=743006 4244,dbus-daem,57u
firefox 6261 chazelas   45u     IPv4             741950       0t0      TCP UNKNOWN:44232->host24-rangeA-akamai-aanp.cdn.thlon.isp.sky.com:http (ESTABLISHED)
firefox 6261 chazelas   53u     unix 0xffff880178356800       0t0   741947 type=STREAM ->INO=743008 3575,Xorg,56u
firefox 6261 chazelas   60u     IPv4             743011       0t0      TCP UNKNOWN:52760->a95-101-128-57.deploy.akamaitechnologies.com:http (ESTABLISHED)
firefox 6261 chazelas   73u     IPv4             742158       0t0      TCP UNKNOWN:54674->lhr35s01-in-f14.1e100.net:http (ESTABLISHED)
firefox 6261 chazelas   87u     IPv4             743521       0t0      TCP UNKNOWN:33564->stackoverflow.com:https (ESTABLISHED)
firefox 6261 chazelas   91u     IPv4             743522       0t0      TCP UNKNOWN:53940->93.184.220.29:http (ESTABLISHED)
firefox 6261 chazelas   92u     IPv4             742153       0t0      TCP UNKNOWN:36836->151.101.65.69:https (ESTABLISHED)
firefox 6261 chazelas   94u     IPv4             742154       0t0      TCP UNKNOWN:33716->192.0.73.2:https (ESTABLISHED)
firefox 6261 chazelas   96u     IPv4             742157       0t0      TCP UNKNOWN:51166->lhr26s04-in-f234.1e100.net:https (ESTABLISHED)
firefox 6261 chazelas  113u     IPv4             744875       0t0      TCP UNKNOWN:43262->lhr35s01-in-f1.1e100.net:https (ESTABLISHED)
    
por 28.06.2017 / 22:41
3

com ss .

Como exemplo, tenho um pid de proftpd :

[root@ftp ~]# ps fax | grep proftpd
 7461 ?        Ss     1:46 proftpd: (accepting connections)

Agora, grep a saída de ss para esse id de processo.

[root@ftp ~]# ss -nap | grep 7461
LISTEN     0      5            *:21         *:*      users:(("proftpd",7461,0))

Onde:

  • -a : Exibe todos os sockets
  • -n : não resolve números de porta bem conhecidos em nomes ( *:22 se tornará *:ssh )
  • -p : mostra informações do processo

Tome cuidado . Essa abordagem pode criar alguns falsos positivos, por exemplo, se você tiver um pid 22, que também pode ser a porta tcp em que você está ouvindo ssh server.

    
por 28.06.2017 / 19:27
1

Provavelmente, isso mostrará as informações desejadas:

netstat -46pan

Mas só mostrará todos os números de processo se o comando for executado como root.
Então, como root:

netstat -46pan | grep "$pid"
    
por 29.06.2017 / 13:17