SSH avec Python

Manav Narula 30 janvier 2023
  1. Utilisez la bibliothèque paramiko en Python pour créer des connexions SSH et exécuter des commandes
  2. Utilisez le module subprocess pour créer des connexions SSH et exécuter des commandes
SSH avec Python

SSH (signifie Secure Socket Shell) est un protocole réseau très utilisé pour des services de communication sécurisés et cryptés sur un réseau inconnu et non sécurisé. Il nous permet d’envoyer des commandes entre deux appareils sur un tel réseau à distance et possède de nombreuses applications.

Python a des modules disponibles qui permettent une telle exécution SSH. Ce didacticiel explique comment exécuter des commandes shell sur un périphérique distant après la sécurisation de la connexion SSH.

Utilisez la bibliothèque paramiko en Python pour créer des connexions SSH et exécuter des commandes

Le module paramiko est fréquemment utilisé pour implémenter les protocoles SSH en Python. Il permet à la fois la communication côté serveur et côté client.

Vérifiez le code ci-dessous pour exécuter des commandes shell sur un périphérique distant à l’aide de ce module.

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

La fonction SSHClient() spécifie une session de serveur SSH. Nous nous connectons à l’appareil en utilisant les détails d’authentification appropriés dans la fonction connect. Les commandes requises peuvent être exécutées sur cet appareil à l’aide de la fonction exec_command().

Un autre module nommé spur est dérivé de ce module mais a une interface légèrement meilleure.

Utilisez le module subprocess pour créer des connexions SSH et exécuter des commandes

La fonction check_output() du module subprocess peut être utilisée pour exécuter les commandes qui lui sont passées, et la fonction renvoie la sortie de cette commande. Nous pouvons créer des connexions SSH sans mot de passe avec cette fonction pour exécuter les commandes requises.

Le code suivant en montre un exemple.

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

Une autre méthode qui peut être utilisée à partir de ce module est le Popen(). Elle est similaire à la fonction os.Popen() du module os pour exécuter des commandes et des programmes externes. Dans ce module, le Popen est une classe et non une méthode. C’est un peu compliqué à utiliser en raison de divers paramètres qui doivent être spécifiés avec la commande requise. Il combine toutes les 4 fonctions os.Popen() en une seule. Il exécute également la commande en tant que processus distinct. Nous pouvons l’utiliser pour créer des connexions SSH et exécuter des commandes, comme indiqué ci-dessous.

subprocess.Popen(
    "ssh {user}@{host} {cmd}".format(user=user, host=host, cmd="ls -l"),
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
).communicate()
Auteur: 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