Puoi usare netstat
per questo. Guarda l'esempio (ho cercato ssh
):
netstat -putan | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1725/sshd
tcp 0 0 1.2.3.4:45734 1.2.3.5:22 ESTABLISHED 2491/ssh
tcp6 0 0 :::22 :::* LISTEN 1725/sshd
Spiegazione:
Uso spesso i parametri -putan
(perché sono semplici da ricordare).
-p
:mostra i PID dell'applicazione/processo-u
:mostra porte/connessioni udp-t
:mostra porte/connessioni tcp-a
:mostra sia i socket in ascolto che quelli non in ascolto-n
:output numerico (non eseguire ricerche DNS per nomi host ecc.)
Nell'output sopra, vedi che c'è un processo daemon ssh (sshd
) con PID 1725
in ascolto sulla porta 22
su tutte le interfacce di rete (0.0.0.0
). Inoltre esiste un processo client ssh (PID 2491
) collegato all'indirizzo IP 1.2.3.5
al numero di porta 22
, il mio indirizzo IP è 1.2.3.4
e la mia porta esterna è 45734
. Vedi che la connessione è stata stabilita. Pertanto ho effettuato l'accesso tramite ssh
.
Un altro strumento che può farlo è lsof
:
# lsof -i -a -p 1981
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:22 (LISTEN)
#
Le opzioni utilizzate sono le seguenti:
-i
per stampare le porte Internet aperte da un processo-a
per fare in modo che tutte le opzioni siano AND-p 1981
per mostrare l'output per il processo 1981-n
per inibire la ricerca del nome host e mostrare invece l'IP-P
per inibire la ricerca del servizio e mostrare invece il numero di porta
lsof
ha il vantaggio che puoi specificare il processo da controllare piuttosto che doverlo estrarre da un output più grande. netstat
è disponibile in modo più affidabile sui sistemi, sebbene lsof
sta diventando più standard di prima.
ss
utility dal pacchetto iproute per Linux