都知道paramiko是基于SSH协议的,可以SSH连接服务器操作,
之前面试被问到过,如何可以快速的批量操作服务器更新服务器文件啥的 。
我当时说用paramiko来操作,面试的人说,那也是一台一台操作,我一脸懵逼
然后他说,你听过异步(协程、多线程、多进程)吗 ,我说那我知道了。
(异步并发编程,也是我在学爬虫的时候学会的)
这回我就用的是线程池和结合paramiko来搞服务器
代码如下
import paramiko
from common.ParamikoHelper import ParamikoHelper
from concurrent.futures.thread import ThreadPoolExecutor
def get_uptime(host):
pa = ParamikoHelper(host, 'root', 22, private_key)
ret = pa.execute_command('cat /proc/loadavg')
print(f'主机{host},负载{ret}')
if __name__ == '__main__':
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
ip_lists = ['c0', 'c1', 'c2', 'c3', 'c4']
with ThreadPoolExecutor(3) as t:
for ip in ip_lists:
t.submit(get_uptime, ip)
运行结果
还有个paramiko的代码在哪里呢 ? 看官可移步下面这篇文章。
拿过来就能用。
https://blog.csdn.net/hans99812345/article/details/111800169