Tôi gặp vấn đề với việc nhận đường ống để hoạt động với paramiko.Paramiko: Các khối ống luôn được đọc trên
này hoạt động:
ssh = paramiko.SSHClient()
[...]
stdin, stdout, stderr = ssh.exec_command("find /tmp")
stdout.read()
này không không làm việc (khối mãi mãi trên stdout.read()):
[...]
stdin, stdout, stderr = ssh.exec_command("bash -")
stdin.write("find /tmp\n")
stdin.close()
stdout.read()
Bất kỳ ý tưởng?
EDIT:
tôi nhìn vào mã nguồn cho paramiko và ChannelFile.close không thực sự làm bất cứ điều gì về thông tin liên lạc. Vì vậy, tôi nhìn API kênh, và điều này dường như làm việc:
stdin.write("find /tmp\n")
stdin.flush()
stdin.channel.shutdown_write()
stdout.read()
Vâng, tôi đã tự tìm ra, nhưng SO không cho phép tôi trả lời các câu hỏi của riêng mình :-) – hmn
BTW, cũng được đề cập ở đây: https://github.com/robey/paramiko/pull/43 – hmn
liên kết chính xác hiện là https://github.com/paramiko/paramiko/pull/43 –