Python: verificare se una porta di un host remoto è aperta

In questo articolo vedremo come verificare se una porta di un host remoto è aperta o meno con Python.

La verifica prevede la creazione di una sockete verso l'host remoto sulla porta specificata indicando un timeout in secondi che ci permette di evitare inutili attese nella richiesta.

import socket

def check_port(host='127.0.0.1', port=80, timeout=2):
    sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sck.settimeout(timeout)
    try:
        sck.connect((host, int(port)))
        sck.shutdown(socket.SHUT_RDWR)
        return True
    except:
        return False
    finally:
        sck.close()

Se la porta è aperta, viene restituito il valore booleano True. In caso di eccezioni, come un timeout nella connessione o altri errori a livello di networking, viene restituito il valore False. Per ottimizzare la gestione delle risorse, il blocco finally provvede a chiudere la socket in entrambi i casi.

Torna su