Voglio eseguire un comando tail -f logfile
su una macchina remota usando il modulo paramiko di python. Sto tentando finora nel modo seguente:Comandi ssh di lunga durata nel modulo paramiko python (e come terminarli)
interface = paramiko.SSHClient()
#snip the connection setup portion
stdin, stdout, stderr = interface.exec_command("tail -f logfile")
#snip into threaded loop
print stdout.readline()
mi piacerebbe il comando da eseguire tutto il tempo necessario, ma ho 2 problemi:
- Come arresto questo pulito? Ho pensato di creare un canale e quindi di utilizzare il comando
shutdown()
sul canale quando ho finito con esso- ma ciò sembra disordinato. È possibile fare qualcosa come inviatoCtrl-C
allo stdin del canale? readline()
blocchi, e potrei evitare i thread se avessi un metodo non bloccante per ottenere output, qualche pensiero?
Odio interrompere la notizia cattiva, ma SSHClient() utilizza già i thread internamente. – joeforker