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!