您现在的位置是:首页 > 文章详情

python实现多线程软件分发(局域网)

日期:2019-10-15点击:623

程序说明:
1、适用于局域网C类地址,如要适用CIDR,则需要改造程序;
2、多并发下发软件,但没有进行安装;
3、需要有远程PC的管理员帐号密码,比较适合域控环境;
4、比较适合企业IT管理员使用。

#-*- coding:cp936 -*- #import sys #reload(sys) #sys.setdefaultencoding('utf8') import subprocess import threading import os print '开启软件分发程序' print '-----------------------------------' ipstart=raw_input('请键入你的起始IP地址 :') ipend=raw_input('请键入你的结束IP地址 :') user=raw_input('请输入客户端的管理员用户 :') password=raw_input('请输入客户端管理员密码 :') print '-----------------------------------' print '\n' ipstart='x.x.x.x' ipend='x.x.xx' user='xxx' password='xxx' ipstartlist=ipstart.split('.') ipendlist=ipend.split('.') a=ipstartlist[0] b=ipstartlist[1] c=ipstartlist[2] start=int(ipstartlist[3]) end=int(ipendlist[3]) cmd="cmd.exe" f=open(r'c:\cmd.txt','a') h=1 n=1 #线程数 ep=(end-start+1)/n remain=(end-start+1)%n def deploy(start1,end1): global h while start1 <= end1: p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) #ping 进程 pp=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) #net use进程 ppp=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) #copy进程 ipk=a,b,c,str(start1) ip='.'.join(ipk) cmd1=r'net use \\%s\ipc$ "%s" /user:"%s"'%(ip,password,user)+"\n" cmd2=r'cmd /k xcopy /i /s /e /y D:\winxp\*.* \\"%s"\c$\winxp'%ip+"\n" p.stdin.write("ping %s"%ip+"\n") p.stdin.close() #pp.wait() print p.stdout.read() pout=p.communicate()[0] if pout.find('Reply from')>=0: print '(%s)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'%h print '* %s 客户端在线!!!'%ip pp.stdin.write(cmd1) pp.stdin.close() #p.wait() ppout=pp.stdout.read() if ppout[143:145]=='命': print "* 成功连接客户端: %s"%ip print '\n' f.write('%s %s 成功连接客户端'%(h,ip)+'\n') f.write('\n') ppp.stdin.write(cmd2) ppp.stdin.close() #ppp.wait() pppout=ppp.stdout.read() if pppout.find('11')==468: f.write('%s %s 成功复制所有文件'%(h,ip)+'\n') print "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" print '\n' else: print "文件复制失败" f.write('%s 文件复制失败'%ip) print "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" print '\n' else: print "* 客户端:%s连接失败"%ip print '\n' f.write('%s %s 客户端连接失败'%(h,ip)+'\n') f.write('\n') else: print '\n\n' print '(%s)##################################################'%h print '* %s 客户端不在线'%ip print '####################################################' print '\n' f.write('%s %s 客户端不在线'%(h,ip)+'\n') start1=start1+1 h=h+1 if __name__=='__main__': threads=[] if ep >=1: if remain == 0: for i in xrange(0,n): d=start+i*ep endd=start+ep*(i+1)-1 threads.append(threading.Thread(None,target=deploy,args=(d,endd))) else: for i in xrange(0,n): d=start+i*ep endd=start+ep*(i+1)-1 threads.append(threading.Thread(None,target=deploy,args=(d,endd))) threads.append(threading.Thread(None,target=deploy,args=(start+n*ep,end))) else: threading.Thread(None,target=deploy,args=(start,end)) for t in threads: t.start() for t in threads: t.join()
原文链接:https://yq.aliyun.com/articles/720993
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章