码迷,mamicode.com
首页 > 编程语言 > 详细

用Python多线程给主机组批量分发命令

时间:2016-08-23 19:11:43      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:多线程   python   分发命令   

需求:用Python的多线程对主机组批量分发命令


脚本内容:

[root@test1 opt]# cat index.py 
#!/usr/bin/env python
#coding:utf-8
import threading
import paramiko
import time

while True:
    time.sleep(3)
    comd = raw_input(‘请输入你要批量分发的命令:‘)
    num = 9     #定义IP最后一位数的初始值
    def run(n):
        private_key_path = ‘/root/.ssh/id_rsa‘                          #输入Key的路径
        key = paramiko.RSAKey.from_private_key_file(private_key_path)   #获得key
        ssh = paramiko.SSHClient()   #获取连接ssh方法
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #获允许连接不在know_hosts文件中的主机
        global num                                       #加上global可以在局部变量改全局变量的值
       
        samp.acquire()                                   #加上锁,4线程同时执行
        
        num += 1
        ip=‘192.168.200.%s‘ %num        #三台机器的IP地址
    
        ssh.connect(hostname=ip, port=22, username=‘root‘, pkey=key)  #连接相关信息
        stdin, stdout, stderr = ssh.exec_command(comd)  #执行命令
        print stdout.read()                             #输出命令
        ssh.close();                                    #关闭
    
        samp.release()                                   #解锁
    
    
    samp = threading.BoundedSemaphore(3)                 #最大连接数,也就是同时运行的线程数
    for i in range(3):
        t = threading.Thread(target=run,args=(i,))       #这里定义了三个线程,上面最大连接数又设为了三,也就是会同时运行这三个线程
        t.start()


执行结果展示:

技术分享


本文出自 “wsyht的博客” 博客,请务必保留此出处http://wsyht90.blog.51cto.com/9014030/1841575

用Python多线程给主机组批量分发命令

标签:多线程   python   分发命令   

原文地址:http://wsyht90.blog.51cto.com/9014030/1841575

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!