How to offene Ports mit Python prüfen

Grundlegendes

Oft ist es in einem Netzwerk nötigt, dass man prüft, ob bestimmte Ports offen sind. Um dies zu prüfen, hat man mehrere, verschiedene Optionen. So kann man u. a. den Portscanner nmap verwenden, die Ports direkt mit der Windows PowerShell prüfen oder aber man verwenden ein kleines Skript um die Ports mit Python zu prüfen.

Die PowerShell funktioniert in der Regel hauptsächlich unter Windows Betriebssysteme, obwohl man Sie auch macOS oder Linux installiert werden kann. Für die letzten beiden Systeme kommt dann auch jeher das Python-Skript infrage.

Skript um offene Ports mit Python zu prüfen

In Python kann man mithilfe von verschiedenen Bibliotheken testen, ob ein Port in einem Netzwerk frei oder belegt ist. Eine gängige Methode besteht darin, die socket-Bibliothek zu verwenden. Dieses kleine Beispiel zeigt ein einfaches Skript, mit welchem ein Port getestet werden kann.

Es wird die socket-Bibliothek verwendet, um ein Socket-Objekt zu erstellen und eine Verbindung zum angegebenen Host und Port herzustellen. Wenn eine Verbindung erfolgreich hergestellt werden kann, bedeutet dies, dass der Port belegt ist.

Andernfalls wird eine Ausnahme ausgelöst, und man kann davon ausgehen, dass der Port frei ist.

Die host- und port-Variablen müssen entsprechend anzupassen werden, um den gewünschten Host und Port zu testen. In diesem Beispiel wird der Port 80 vom Localhost getestet. Der Port 80 ist dabei standardmäßig für das HTTP Protokoll zuständig.

Beachten sollte man jedoch noch, dass die Firewall-Einstellungen auf dem Zielrechner den Zugriff auf den Port blockieren kann, unabhängig davon, ob er tatsächlich frei oder belegt ist.

import socket

def is_port_open(host, port):
    try:
        # Erstellet ein Socket-Objekt
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            # Setzen eine kurze Timeout-Zeit, um das Blockieren zu verhindern
            s.settimeout(1)
            # Versuchen jetzt ein Verbindung zum angegebenen Host und Port herzustellen
            s.connect((host, port))
        # Wenn die Verbindung erfolgreich war, ist der Port belegt
        return True
    except (socket.timeout, ConnectionRefusedError):
        # Wenn eine Ausnahme ausgelöst wird, ist der Port frei
        return False

# Testen, ob der Port 80 auf localhost (127.0.0.1) frei ist
host = "127.0.0.1"
port = 80

if is_port_open(host, port):
    print(f"Port {port} auf {host} ist belegt.")
else:
    print(f"Port {port} auf {host} ist frei.")

Für die Erstellung wurde Visual Studio Code verwendet. Wie man an der Ausgabe sieht, ist der Port 80 auf dem localhost frei.

Ports mit Python prüfen

Fazit

Auf die Erläuterung der einzelnen Funktionen und der Syntax von Python habe ich bewusst verzichtet. Es gibt im Netz genügend Kurse, um sich mit der Programmiersprache Python zu beschäftigen. Es geht hier lediglich um das Skript, mit welchem man Ports mit Python prüfen kann.

Das könnte sich auch interessieren:

Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 14.07.2024

a9a4441d252543f38d87570b04fad45c
Der Blogbetreiber und Autor: Markus Elsberger

Über den Autor

Mein Name ist Markus Elsberger und ich beschäftige mich mit der Administration von Windows und Linux Systemen sowie mit diversen Themen bzgl. Netzwerktechnik. In meiner Lehrtätigkeit erstelle ich verschiedene Szenarien und teste auch verschiedene Konfigurationen, welche ich in diesem Blog festhalten möchte.


Kostenlose Befehlsreferenzen und E-Books
(Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.)


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

×