Executer une commande sur un serveur distant via ssh avec Python


Executer une commande shell sur un serveur distant peut s’avérer très utile, par exemple avoir le load average du serveur distant à monitorer, rebooter un serveur à distance, récupérer l’espace disque restant, etc.

Il y a plusieurs manières d’executer une commande shell sur un serveur distant, on peut utiliser paramiko ou un simple popen comme suit:


Pour connaitre le load average du serveur skynet:

 
from subprocess import Popen, call, PIPE
 
user= arnold
server = skynet.com
 
process = Popen(['ssh', '-t', user + '@' + server ,'cat', '/proc/loadavg'], bufsize=4096, stdout=PIPE)
output = process.communicate()[0]

Ce procédé implique d’avoir des clefs ssh configurées

Note: J’ai eu quelques problèmes de blocage lors du login au serveur distant jusqu’à ce que j’ajoute l’option -t à ssh

Edit:

En bash ça donne:

ssh arnold@skynet.com cat /proc/loadavg

ou pour avoir l’espace disque

ssh arnold@skynet.com df -h
etc.
Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.