Paramiko ile çalışmak için pipetlemeyle ilgili bir sorunum var.Paramiko: Okunması halinde sonsuza kadar boru blokları
Bu çalışır:
ssh = paramiko.SSHClient()
[...]
stdin, stdout, stderr = ssh.exec_command("find /tmp")
stdout.read()
Bu değil nasıl çalışır (stdout.read sonsuza blokları()):
[...]
stdin, stdout, stderr = ssh.exec_command("bash -")
stdin.write("find /tmp\n")
stdin.close()
stdout.read()
Herhangi bir fikir?
DÜZENLEME:
Ben paramiko için kaynak koduna baktım ve ChannelFile.close gerçekten iletişim anlamında bir şey yapmaz. Bu yüzden kanal API baktım ve bu iş gibi görünüyor: Bazı soruşturma ile
stdin.write("find /tmp\n")
stdin.flush()
stdin.channel.shutdown_write()
stdout.read()
Evet, bunu zaten kendim çözdüm, ama SO, kendi sorularıma cevap vermeme izin vermiyor :-) – hmn
BTW, ayrıca şu adrese de yazdı: https://github.com/robey/paramiko/pull/43 – hmn
Doğru bağlantı şu anda https://github.com/paramiko/paramiko/pull/43 –