sách gpt4 ăn đã đi

python - Paramiko:读取时管道 block 永远

In lại 作者:太空狗 更新时间:2023-10-29 18:25:54 28 4
mua khóa gpt4 giày nike

我在让管道与 paramiko 一起工作时遇到问题。

这个有效:

ssh = paramiko.SSHClient()
[...]
stdin, stdout, stderr = ssh.exec_command("find /tmp")
stdout.read()

cái này有效(在 stdout.read() 上永远阻塞):

[...]
stdin, stdout, stderr = ssh.exec_command("bash -")
stdin.write("find /tmp\n")
stdin.close()
stdout.read()

Có ý tưởng gì không?

biên tập:

我查看了 paramiko 的源代码,ChannelFile.close 在通信方面并没有真正做任何事情。所以我查看了 channel API,这似乎有效:

stdin.write("find /tmp\n")
stdin.flush()
stdin.channel.shutdown_write()
stdout.read()

câu trả lời hay nhất

经过一些调查,似乎 stdin.close() 实际上并未结束 bash session 。为此,您可以使用 bash 命令 ra (stdin.write('exit\n')) 或深入到 paramiko Channel tiêu chuẩn 对象下的对象:

stdin.channel.shutdown_write()

如果您希望 bash session 继续执行另一个命令,您需要直接使用 channel 对象。 documentation for Channel提到了 recv_ready(self)recv(self, nbytes) 这将允许您在尝试获取数据之前检查数据。

关于python - Paramiko:读取时管道 block 永远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8052840/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress