Sto eseguendo uno script Python di lunga durata tramite ssh su una macchina remota usando paramiko. Funziona come un fascino, nessun problema finora.viene emesso continuamente da paramiko ssh exec_command
Sfortunatamente, lo stdout (rispettivamente lo stderr) viene visualizzato solo al termine dello script! Tuttavia, a causa del tempo di esecuzione, preferisco di gran lunga lo per stampare ogni nuova riga mentre viene stampata, non dopo.
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)
Come può essere ottenuto?Nota: Naturalmente si potrebbe inviare l'output in un file e 'meno' questo file tramite un'altra sessione ssh, ma questo è molto brutto e ho bisogno di un pulitore, soluzione ideale divinatorio :)
solo per aiutare gli altri in futuro, myScript.py dovrebbe contenere sys.stdout.flush() – ItayB