[英]Python Paramiko Client SSH very slow when read stdout
我正在使用 Paramiko 通過 SSH 控制虛擬機。當我發送任何命令時,它幾乎立即執行,但是當從標准輸出讀取 output 時,它需要永遠。
我有大約 5 秒的時間讓 ls 閱讀:
執行命令的時間: 0.1445319652557373
讀取output的時間: 5.382704973220825
這是一個片段:
import time
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="192.168.0.123",
port=1234,
username="admin",
password="admin")
t1 = time.time()
stdin, stdout, stderr = ssh.exec_command("powershell -command \"ls -recurse .\"")
t2 = time.time()
t3 = time.time()
print(stdout.readlines())
t4 = time.time()
print(t2 - t1)
print(t4 - t3)
謝謝!
stdout.readlines()
在子進程完成並將 EOF 發送到主進程之前讀取所有行。 如果您想在可用時逐行閱讀,然后for line in exp.stdout
,文件 object 允許您遍歷每一行作為其通過 pipe 的提要。否則使用stdout, stderr = Subprocess.communicate(None)
作為通信方法使用更好的系統調用從子進程讀取數據(如 epoll、select、poll)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.