Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter des commandes à distance via SSH à l'aide de Python ?

Comment puis-je exécuter des commandes à distance via SSH à l'aide de Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 18:10:02569parcourir

How Can I Execute Commands Remotely Over SSH Using Python?

Exécuter des commandes via SSH avec Python

L'automatisation de l'exécution des commandes sur des machines distantes est une tâche courante dans l'administration système. Le module de sous-processus de Python peut gérer des commandes locales, mais que se passe-t-il si vous devez exécuter des commandes sur un hôte distant via SSH ?

Pour surmonter ce défi, envisagez d'utiliser la bibliothèque Paramiko. Paramiko fournit un ensemble complet d'outils pour la communication SSH. Explorons comment utiliser Paramiko pour exécuter des commandes à distance.

Utilisation de Paramiko pour l'exécution de commandes à distance

<code class="python">import paramiko

# Connect to the remote host with username, password, and hostname
ssh = paramiko.SSHClient()
ssh.connect(hostname, username, password)

# Execute a command using exec_command
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(command)

# Handle output and error output
print(ssh_stdout.read().decode())
print(ssh_stderr.read().decode())

# Close the connection
ssh.close()</code>

Utilisation de clés SSH pour l'authentification

Si vous préférez utiliser des clés SSH pour l'authentification, vous pouvez le faire en définissant la clé à l'aide de paramiko.RSAKey.from_private_key_file().

<code class="python">k = paramiko.RSAKey.from_private_key_file(keyfilename)

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username, pkey=k)</code>

Exemple d'utilisation

Par exemple, vous pouvez exécuter et capturer le résultat d'une commande à distance avec le code suivant :

<code class="python">ssh = paramiko.SSHClient()
ssh.connect("remote_host", "username", "password")
stdin, stdout, stderr = ssh.exec_command("df -h")
output = stdout.read().decode()
ssh.close()

print(output)</code>

En tirant parti de la puissance de Paramiko, vous pouvez facilement exécuter des commandes, récupérer le résultat, et gérez les erreurs sur les machines distantes dans le confort de vos scripts Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn