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.