下面的代码通过 SSH 在一台机器上运行 grep 并打印结果:
import sys, os, string
import paramiko
cmd = "grep -h 'king' /opt/data/horror_20100810*"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.10.3.10', username='xy', password='xy')
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('xy\n')
stdin.flush()
print stdout.readlines()
我怎样才能同时 grep 五台机器(这样我就不会有重大延迟),而不是将所有这些都放在五个变量中并将它们全部打印出来。
原文由 Whit3H0rse 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要将调用放入单独的线程(或进程,但这会有点矫枉过正),这反过来又要求代码在函数中(无论如何这是个好主意:模块顶部没有大量代码等级)。
例如:
如果您有超过五台主机,我建议您改用“线程池”架构和工作单元队列。但是,对于只有五个,坚持“专用线程”模型更简单(特别是因为标准库中没有线程池,所以你需要一个第三方包,比如 线程 池……或者很多微妙的自定义当然是你自己的代码;-)。