簡體   English   中英

Python Paramiko 客戶端 SSH 讀取標准輸出時非常慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM