2013-01-08 07:34:55 +0000 2013-01-08 07:34:55 +0000
202
202

Obtenir une liste des ports ouverts dans Linux

J'ai besoin d'une commande Linux pour lister tous les ports ouverts libres à utiliser dans une application

lsof -i TCP| fgrep LISTEN

Ne semble pas aider car les ports qu'elle liste ne sont pas nécessairement libres d'utilisation. Comment puis-je lister les ports libres non utilisés ?

Réponses (7)

268
268
268
2013-01-08 11:51:03 +0000
netstat -lntu

tel que répondu par @askmish vous donnera la liste des services fonctionnant sur votre système sur les ports tcp et udp où

  • -l = uniquement les services qui écoutent sur un port donné
  • -n = afficher le numéro de port, n'essayez pas de résoudre le nom du service
  • -t = tcp ports
  • -u = udp ports
  • -p = nom du programme

Vous n'avez pas besoin du paramètre “p” car vous ne voulez que savoir quels sont les ports libres et non pas quel est le programme qui tourne dessus.

Cela montre seulement quels ports de votre système sont utilisés. Cela ne vous indique pas l'état de votre réseau, par exemple si vous êtes derrière la NAT et que vous souhaitez que certains services soient accessibles de l'extérieur. Ou si le pare-feu bloque le port pour les visiteurs extérieurs. Dans ce cas, nmap vient à votre secours. AVERTISSEMENT : N'utilisez nmap que sur les réseaux qui sont sous votre contrôle. De plus, il existe des règles de pare-feu qui peuvent bloquer les pings de nmap, vous devrez jouer avec les options pour obtenir des résultats corrects.

93
93
93
2016-06-08 20:19:05 +0000

Puisque net-tools est déprécié , vous pouvez utiliser la commande [ ss ]&3 au lieu de netstat si netstat n'est pas présent sur votre machine :

ss -lntu

devrait fonctionner de manière similaire à

netstat -lntu

selon l'aide intégrée :

-n, --numeric don't resolve service names
-l, --listening display listening sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
21
21
21
2013-01-08 07:45:50 +0000

Cette commande va lister les ports de réseau ouverts et les processus qui les possèdent :

netstat -lnptu

vous pouvez ensuite filtrer les résultats selon vos spécifications exactes.

Vous pouvez également utiliser nmap pour des résultats plus granulaires sur les ports.

5
5
5
2014-11-03 04:33:36 +0000

Tous les ports ouverts, y compris le trafic de réponse :

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
1
1
1
2019-01-16 23:21:34 +0000

D'après moi, la question initiale portait sur les ports inutilisés, et non sur les ports actuellement reliés à des services. Si c'est le cas, il n'y a pas d'autre moyen de les lister que de lister les ports utilisés et de supposer que les autres sont inutilisés.

Un point supplémentaire à garder à l'esprit : en tant qu'utilisateur, vous ne pourrez pas ouvrir un port inférieur à 1024 (vous aurez besoin des autorisations root pour cela).

0
0
0
2019-01-16 19:51:05 +0000

Essayez

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' | awk 'NR>2{print $7}' | sort -n | uniq

et regardez ça.

0
0
0
2016-04-04 06:29:27 +0000

La commande suivante fonctionnera sur tout Unix dont la sortie est au même format qu'Ubuntu / Debian - où l'adresse locale est dans la colonne 4 et la sortie comprend un en-tête de 2 lignes en haut. Si l'un de ces numéros est différent, modifiez la commande awk ci-dessous.

Si vous voulez seulement IPv4 :

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Si vous voulez seulement IPv6 :

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Si vous voulez les deux ensemble :

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

La commande produit une liste de numéros de port qui sont à l'écoute sur toutes les interfaces. Si vous voulez lister tous les ports qui écoutent sur l'interface localhost, utilisez quelque chose comme ceci :

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq