Ich möchte ssh Remote-Server und einige Shell-Skripte (wie scp oder yum etc.) ausführen.Wie bekomme ich kontinuierlich mit Paramiko SSHClient
Alles ging gut, außer dass ich nicht kontinuierlich stdout von etw wie scp Fortschritt oder yum Download-Fortschritt bekommen kann. Die f.read
wird blockiert und nichts kehrt zurück.
Ich vermute, Paramiko kann gefälschte Stdout Stream Zeile für Zeile übertragen, aber diese progressiven Ausgaben geben nicht Zeilentrennzeichen aber '\ r' aus.
Gibt es trotzdem dieses Problem zu lösen?
Hier ist, was jetzt im doning, wo ssh
ist paramiko.SSHClient()
def read_buffer_line(f):
line = ""
while not f.channel.exit_status_ready():
c = f.read(1)
if c == '\n':
yield line
line = ''
else:
line += c
yield line + f.read()
def ssh_run(ssh, cmd):
stdin, stdout, sterr = ssh.exec_command(cmd, get_pty=True, bufsize=1)
for l in read_buffer_line(stdout):
print l
es funktioniert. Vielen Dank.. –