SSH utilizzando Python
-
Usa la libreria
paramiko
in Python per creare connessioni SSH ed eseguire comandi -
Usa il modulo
subprocess
per creare connessioni SSH ed eseguire comandi
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()
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