2011-12-23 12:49:28 +0000 2011-12-23 12:49:28 +0000
31
31
Advertisement

Comment puis-je vérifier quels ports sont occupés et quels ports sont libres sur ma machine Linux ?

Advertisement

Existe-t-il une ligne de commande ou tout autre moyen de trouver et de répertorier les numéros de ports occupés et libres sur ma machine Linux ?

Advertisement

Réponses (4)

42
42
42
2011-12-23 13:11:39 +0000

La commande

netstat -antu

affichera tous les ports tcp et udp utilisés. La sortie ressemblera à ceci :

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN

Le chiffre après les deux points dans le champ Adresse locale indique le port utilisé. Si l'état est “LISTEN”, cela signifie que le port est utilisé pour les connexions entrantes. Si l'adresse IP dans le champ Local Address est 0.0.0.0, cela signifie que les connexions entrantes seront acceptées sur toute adresse IP attribuée à une interface - c'est-à-dire les connexions provenant de l'extérieur de votre machine.

Si le champ indique localhost ou 127.0.0.1, cela signifie que seules les connexions provenant de votre machine seront acceptées.

De plus, si vous ajoutez le paramètre -p, et que vous le lancez en tant que root, il affichera le processus qui a ouvert le port :

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN 860/rpc.statd

Tout ce qui n'est pas affiché comme étant en cours d'utilisation est gratuit, mais les utilisateurs (comptes non privilégiés) ne peuvent ouvrir que les ports supérieurs à 1023.

13
13
13
2012-10-12 06:02:01 +0000

J'ai compilé une petite liste moi-même.

Certains de mes préférés sont :

netstat -tulpn
lsof -i -n -P
7
Advertisement
7
7
2015-11-23 15:35:42 +0000

Un bon moyen de vérifier de manière fiable les ports ouverts est d'utiliser ss (en remplacement des (https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ “Deprecated Linux networking commands and their replacements”) netstat [dépréciés]), il est utilisable dans un script sans nécessiter de privilèges élevés (c'est-à-dire sudo).

Utilisation : option -l pour les ports d'écoute, option -n pour contourner la résolution DNS, et le filtre sur le port source NN : src :NN (remplacez NN par le port que vous voulez surveiller). Pour d'autres options, voir les exemples man ss

ss -ln src :NN

:

[user@server ~]# ss -ln src :80
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
[user@server ~]# ss -ln src :81
State Recv-Q Send-Q Local Address:Port Peer Address:Port

Et dans un script, en utilisant grep, nous pouvons tester si la sortie contient le port que nous avons demandé. Exemple avec le port 80 utilisé (voir ci-dessus) :

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if ["$result" -eq 1]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

Exemple avec le port 81 non utilisé (voir ci-dessus)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if ["$result" -eq 1]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)
3
3
3
2014-06-30 08:25:41 +0000

Une autre façon :

telnet localhost <PORT_NUMBER>

Si le port est libre, vous obtiendrez une erreur. Si le port est utilisé, telnet se connectera.

(trouvé sur http://www.unix.com/unix-for-dummies-questions-and-answers/8456-how-know-whether-particular-port-number-free-not.html )

Questions connexes

6
10
7
5
4
Advertisement
Advertisement