SSH utilizzando Python

Manav Narula 22 giugno 2021
  1. Usa la libreria paramiko in Python per creare connessioni SSH ed eseguire comandi
  2. Usa il modulo subprocess per creare connessioni SSH ed eseguire comandi
SSH utilizzando Python

SSH (acronimo di Secure Socket Shell) è un protocollo di rete molto utilizzato per servizi di comunicazione crittografati e protetti su una rete sconosciuta e non sicura. Ci consente di inviare comandi tra due dispositivi su tale rete in remoto e ha molte applicazioni.

Python dispone di moduli che consentono tale esecuzione SSH. Questo tutorial discuterà come eseguire i comandi della shell su un dispositivo remoto dopo aver protetto la connessione SSH.

Usa la libreria paramiko in Python per creare connessioni SSH ed eseguire comandi

Il modulo paramiko è spesso usato per implementare i protocolli SSH in Python. Consente la comunicazione sia lato server che lato client.

Controllare il codice seguente per eseguire i comandi della shell su un dispositivo remoto utilizzando questo modulo.

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

La funzione SSHClient() specifica una sessione del server SSH. Ci colleghiamo al dispositivo utilizzando i dettagli di autenticazione appropriati nella funzione connect. I comandi richiesti possono essere eseguiti su questo dispositivo usando la funzione exec_command().

Un altro modulo chiamato spur è derivato da questo modulo ma ha un’interfaccia leggermente migliore.

Usa il modulo subprocess per creare connessioni SSH ed eseguire comandi

La funzione check_output() dal modulo subprocess può essere usata per eseguire i comandi che le sono passati, e la funzione restituisce l’output di questo comando. Possiamo creare connessioni SSH senza password con questa funzione per eseguire i comandi richiesti.

Il codice seguente mostra un esempio di ciò.

subprocess.check_output(["ssh", "my_server", "echo /*/"])

Un altro metodo che può essere utilizzato da questo modulo è il Popen(). È simile alla funzione os.Popen() del modulo os per eseguire comandi e programmi esterni. In questo modulo, il Popen è una classe e non un metodo. È un po’ complicato da usare a causa di vari parametri che devono essere specificati insieme al comando richiesto. Combina tutte le 4 funzioni os.Popen() in una sola. Inoltre esegue il comando come processo separato. Possiamo usarlo per creare connessioni SSH ed eseguire comandi, come mostrato di seguito.

subprocess.Popen(
    "ssh {user}@{host} {cmd}".format(user=user, host=host, cmd="ls -l"),
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
).communicate()
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn