In questo articolo vedremo verificare se il servizio SSH è attivo con Python.
Possiamo implementare la seguente funzione:
import socket
def check_if_ssh_is_up(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((host, port))
return result == 0
Questa funzione utilizza il modulo socket
per controllare se un server SSH è raggiungibile su un determinato host e porta. Ecco la spiegazione riga per riga:
import socket
: Questa linea importa il modulosocket
, che fornisce una serie di funzioni e classi per la comunicazione di rete.def check_if_ssh_is_up(host, port):
: Questa linea definisce la funzionecheck_if_ssh_is_up
che accetta due argomenti:host
eport
. L'argomentohost
indica l'indirizzo IP o il nome del dominio del server SSH, mentre l'argomentoport
specifica il numero di porta su cui il server SSH è in ascolto.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
: Questa linea crea un oggetto di tiposocket
chiamatosock
utilizzandosocket.AF_INET
come primo argomento, che indica l'utilizzo di IPv4 per la comunicazione, esocket.SOCK_STREAM
come secondo argomento, che indica che sarà utilizzato un socket di tipo TCP.result = sock.connect_ex((host, port))
: Questa linea chiama il metodoconnect_ex
sull'oggetto socketsock
, passando una tupla contenentehost
eport
come argomento. Il metodoconnect_ex
tenta di stabilire una connessione al server SSH specificato. Restituisce un codice di errore che rappresenta il risultato della connessione. Se il valore restituito è 0, significa che la connessione è stata stabilita con successo.return result == 0
: Questa linea restituisceTrue
seresult
è uguale a 0, indicando che la connessione è stata stabilita con successo. Altrimenti, restituisceFalse
.