问题描述:
要在做线上操作之前,尝试判断主机是否都是可以连接。
由于一次遍历所涉及到的主机数量比较多,所以采用多线程方式来实现!
1,python多线程探测ssh主机的代码:
 
import Queue, threading
import paramiko
class Worker(threading.Thread):
    failhostlist = [] #表示失败的主机列表
    def run(self):
        while 1:
            if self.q.qsize() == 0:break
            host, sudo_user, sudo_pass = self.q.get()  #从队列里面拿数据
            self.pssh_action(host, sudo_user, sudo_pass)  #干活的内容
            self.q.task_done()    #表示任务已完成了向队列发一个信号                     
            return                #干完活了就可以终止掉线程了return  退出
    def pssh_action(self,host,sudo_user,sudo_pass):
        s=paramiko.SSHClient()
        s.load_system_host_keys()
        try:
            s.connect(hostname=host,username=sudo_user,password=sudo_pass,timeout=3)
            s.close()
        except Exception,e:
            self.failhostlist.append(host)
            return
 
2,调用示例: