28 votes

Comment puis-je savoir si un port est disponible sur Ubuntu 8.04 ?

Existe-t-il une commande que je puisse exécuter depuis bash qui me dise si un port est déjà ouvert ?

39voto

Caterpillar Points 1122

Utilisez "netstat" pour vérifier les ports actuellement utilisés.

netstat -antp

Proto Recv-Q Send-Q Local Address        Foreign Address   State    PID/Program name
tcp        0      0 xxx.xxx.xxx.xxx      0.0.0.0:\*         LISTEN   16297/named     
tcp        0      0 xxx.xxx.xxx.xxx:53   0.0.0.0:\*         LISTEN   16297/named     
tcp        0      0 xxx.xxx.xxx.xxx:53   0.0.0.0:\*         LISTEN   16297/named     
tcp        0      0 127.0.0.1:53         0.0.0.0:\*         LISTEN   16297/named

3 votes

"netstat -antp | grep 80" où 80 est le numéro du port à rechercher.

13voto

Xerxes Points 4113

Ceci (netstat) est la solution la plus rapide...

netstat -lnt

...mais cela vous donne plus de contrôle (au prix de la vitesse (parfois beaucoup de vitesse))...

lsof -n -i -a -u www-data

L'exemple ci-dessus par exemple vous montre tous les ports TCP ouverts et dans le LISTEN état, ET ( -a ) appartenant à l'Apache ( www-data ) utilisateur.

8voto

dfjacobs Points 886

Toutes les bonnes réponses.

Cependant, vous ne mentionnez pas si vous êtes connecté à l'ordinateur en question ;P

Si ce n'est pas le cas, alors nmap est votre ami.

pour commencer, essayez :

nmap -Otarget

amap est également un bon choix qui tentera également de deviner le logiciel du serveur en saisissant les pages de bannières.

pour commencer, essayez :

amaptarget1-6000

7voto

Dave Cheney Points 18132

Essayez

lsof -i :<port number>

Si vous obtenez des résultats, quelque chose est à l'écoute et lié, par ex.

# lsof -i :80
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    1833 nobody    3u  IPv4 51091229      0t0  TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx    1833 nobody    5u  IPv4 46221856      0t0  TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx    1833 nobody    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx    1833 nobody   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)
nginx    1833 nobody   14u  IPv4 46221857      0t0  TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx    1833 nobody   15u  IPv4 51091030      0t0  TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx   11832   root    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx   11832   root   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)

4voto

Brad Points 1004
netstat -tlnp  

Afficher t cp ports qui sont l istening, show n uniquement les nombres (ne pas résoudre les noms - ce qui rend le processus plus rapide) et afficher les p qui effectue l'écoute (le p ne fonctionne que si vous êtes root)

netstat -ulnp  

Afficher u les ports dp qui sont l istening, show n uniquement les nombres (ne pas résoudre les noms - ce qui rend le processus plus rapide) et afficher les p qui effectue l'écoute (le p ne fonctionne que si vous êtes root)

netstat -unp  

Afficher u dp ports qui sont ouverts mais qui n'écoutent pas, montrer n uniquement les nombres (ne pas résoudre les noms - ce qui rend le processus plus rapide) et afficher les noms de domaine. p qui effectue l'écoute (le p ne fonctionne que si vous êtes root)

netstat -an

Afficher a ll ports utilisés, montrer n uniquement les numéros - ne pas résoudre les noms

lsof -i <proto>@<host>:<port>

Par exemple

lsof -i tcp@localhost:25

pour voir si quelque chose écoute sur le port localhost 25/TCP, ou

lsof -i tcp@0.0.0.0:636 

pour voir s'il y a des sockets locales ou distantes qui écoutent (locales) ou sont connectées (locales ou distantes) pour n'importe quel hôte/interface.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X