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.
Articles similaires: