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. |