obtenez de sortie à partir d'un paramiko ssh exec_command en permanence

Je suis de l'exécution d'une longue durée d'exécution d'un script python via ssh sur une machine distante en utilisant paramiko. Fonctionne comme un charme, pas de problèmes jusqu'à présent.

Malheureusement, la sortie standard (stdout) (respectivement le stderr) sont affichés uniquement lorsque le script est terminé! Cependant, en raison du temps d'exécution, je préfèrerais à la sortie de chaque nouvelle ligne comme il est imprimé, pas par la suite.

remote = paramiko.SSHClient()
remote.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote.connect("host", username="uname", password="pwd")

# myScript produces continuous output, that I want to capture as it appears    
stdin, stdout, stderr = remote.exec_command("python myScript.py")
stdin.close()
for line in stdout.read().splitlines():
    print(line)

Comment cela peut-il être atteint? Remarque: bien sûr, on peut rediriger la sortie vers un fichier et 'moins' ce fichier via une autre session ssh, mais c'est très moche et j'ai besoin d'un nettoyeur, idéalement pythonic solution 🙂

juste pour aider les autres à l'avenir, myScript.py doit contenir sys.la sortie standard stdout.flush()

OriginalL'auteur Lukas N.P. Egger | 2015-08-05