Python paramiko多线程执行命令的脚本,加入了threading多线程,执行起来感觉效率很一般,有时候线程还会等待延迟。
据说别人测试的数据,Python多线程中每个时刻只有1个线程运行,每个逻辑CPU利用率都很低,只是有时候换换CPU运行。虽然不知道别人怎么观察的,不过执行起来确实慢,耗资源也比单线程高很多。
#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,threading,sys class SSH_cmd(threading.Thread): hostname=‘‘ cmd=‘‘ username=‘‘ passwd=‘‘ port=‘‘ def run(self): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(hostname=self.hostname,port=self.port,username=self.username,password=self.passwd,timeout=10) except Exception,e: print ‘connnet to %s is timeout ‘ % self.hostname sys.exit() cmd=self.cmd stdin,stdout,stderr=ssh.exec_command(cmd) if not stdout: print ‘%s is OK‘ % self.hostname else: print stdout.read() def Init(): File=open(‘cmd.conf‘) Flist=[] for i in File.readlines(): if not i.strip(): continue Flist.append(i) print Flist return Flist File.close() if __name__=="__main__": A=Init() #excmd=raw_input(‘Enter your command:‘) #expasswd=raw_input(‘Enter your password:‘) for i in xrange(len(A)): cut=A[i].split() HOST=cut[0] CMD=SSH_cmd() CMD.hostname=HOST CMD.username=cut[1].strip() CMD.cmd=cut[4] CMD.port=int(cut[2]) CMD.passwd=cut[3].strip() CMD.start()转载
时间: 2024-11-05 18:59:33