Holen Sie sich eine Liste der Offenen Ports in Linux

Ich benötige einen Linux-Befehl, um alle freien offenen Ports für die Verwendung in einer Anwendung aufzulisten

lsof -i TCP| fgrep LISTEN

Wird nicht als hilfreich angesehen, da die darin aufgelisteten Ports nicht unbedingt frei sind. Wie liste ich freie offene Ports auf, die nicht verwendet werden?

 218
Author: Wilfred Hughes, 2013-01-08

8 answers

netstat -lntu

Wie von @askmish beantwortet, erhalten Sie eine Liste der Dienste, die auf Ihrem System auf TCP-und UDP-Ports ausgeführt werden, wobei

  • -l = nur Dienste, die einen Port abhören
  • -n = Portnummer anzeigen, versuchen Sie nicht, den Dienstnamen aufzulösen
  • -t = tcp-ports
  • -u = udp-ports
  • -p = Name des Programms

Sie benötigen den Parameter ' p ' nicht, da Sie nur wissen möchten, welche Ports frei sind und nicht welches Programm läuft darauf.

Dies zeigt jedoch nur an, welche Ports auf Ihrem System verbraucht sind. Dies zeigt Ihnen nicht den Status Ihres Netzwerks an, z. B. wenn Sie hinter NAT stehen und möchten, dass einige Dienste von außen zugänglich sind. Oder wenn die Firewall den Port für externe Besucher blockiert. In diesem Fall kommt nmap zur Rettung. WARNUNG: Verwenden Sie nmap nur in Netzwerken, die unter Ihrer Kontrolle stehen. Außerdem gibt es Firewall-Regeln, die nmap-Pings blockieren können, Sie müssen mit Optionen herumspielen, um erhalten Sie korrekte Ergebnisse.

 290
Author: mehulved,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-06-24 15:06:11

Seit net-tools ist veraltet, können Sie die ss befehl anstelle von netstat wenn netstat auf Ihrem Computer nicht vorhanden ist:

ss -lntu

Sollte ähnlich funktionieren wie

netstat -lntu

Gemäß der integrierten Hilfe:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets
 104
Author: Eric Finn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-04-20 10:28:10

Dieser Befehl listet offene Netzwerkports und die Prozesse auf, denen sie gehören:

netstat -lnptu

Anschließend können Sie die Ergebnisse nach Ihren genauen Spezifikationen filtern.

Sie können auch nmap für detailliertere Ergebnisse zu Ports verwenden.

 23
Author: askmish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-08 07:45:50

Alle geöffneten Ports einschließlich Antwortverkehr:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
 5
Author: diyism,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-04-04 08:44:12

Meine Einstellung zur ursprünglichen Frage war, dass er nach den nicht verwendeten Ports fragte, nicht nach den Ports, die derzeit mit Diensten verbunden sind. Wenn dies der Fall ist, gibt es keine bestimmte Möglichkeit, sie aufzulisten, außer die verwendeten Ports aufzulisten und anzunehmen, dass die anderen nicht verwendet werden.

Ein weiterer Punkt, den Sie beachten sollten: Als Benutzer können Sie keinen Port mit weniger als 1024 öffnen (dafür benötigen Sie Root-Berechtigungen).

 2
Author: joat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-01-16 23:21:34

Der folgende Befehl funktioniert auf jedem Unix, das im selben Format wie Ubuntu / Debian ausgibt-wobei sich die lokale Adresse in der Spalte 4 befindet und die Ausgabe oben eine 2-Zeilenkopfzeile enthält. Wenn eine dieser Nummern unterschiedlich ist, optimieren Sie den folgenden Befehl awk.

Wenn Sie nur IPv4 wollen:

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

Wenn Sie nur IPv6 wollen:

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

Wenn Sie beide zusammen wollen:

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

Der Befehl gibt eine Liste der Portnummern aus, die alle Schnittstellen abhören. Wenn Sie möchten Sie alle Ports auflisten, die auf der Localhost-Schnittstelle lauschen, und dann Folgendes verwenden:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq
 0
Author: datashaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-04-04 06:29:27

Versuchen

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

Und sieh dir das an.

 0
Author: Robokishan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-01-16 22:33:10

Ein Einzeiler, um nur eindeutige Portnummern und nur IPv4 aufzulisten:

netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq

Alle Credits zu Aaron C. de Bruyns Kommentar.

 0
Author: akki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-02-01 05:52:47