【发布时间】:2021-06-17 12:53:19
【问题描述】:
我正在使用 Paramiko 通过 SSH 控制 VM。当我发送任何命令时,它几乎立即执行,但从 stdout 读取输出时,它需要很长时间。
我有大约 5 秒的时间阅读 ls:
命令执行时间:0.1445319652557373
读取输出的时间: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)
谢谢!
【问题讨论】:
-
exec_command没有完全执行命令。它只是开始执行。实际上是readlines等待命令完成。见Paramiko with continuous stdout。或者您是否有任何证据表明 Paramiko 实际上读取输出的速度比其他 SSH 客户端慢?执行ssh admin@192.168.0.123 powershell -command "ls -recurse ."需要多长时间?
标签: python performance ssh output paramiko