Holen Sie sich die Ausgabe von einem paramiko ssh exec_command kontinuierlich

Ich bin einen zeitintensiver python-Skript über ssh auf einer entfernten Maschine mit paramiko. Wie ein Zauber funktioniert, bisher keine Probleme.

Leider stdout (bzw. der stderr) werden nur angezeigt, nachdem das Skript beendet wurde! Aufgrund der Ausführung Zeit, ich würde viel lieber Ausgabe jede neue Zeile ein, wie er gedruckt ist, nicht danach.

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)

Wie kann das erreicht werden? Hinweis: natürlich könnte man leiten Sie die Ausgabe in eine Datei und "weniger" diese Datei über einen anderen ssh-session, aber das ist sehr hässlich und ich brauche einen Reiniger, ideal pythonic Lösung 🙂

  • nur um anderen zu helfen, in der Zukunft, myScript.py enthalten sollte, sys.stdout.flush()
Schreibe einen Kommentar