多线程ping
[背景]用來對IDC狀態(tài)測試的程序
[腳本如下:]
#!/usr/bin/env python
#Create by badboy
#2009/11/22
'''multithreading ping for checking IDC status!'''
import threading
import os
import time
size = ('20','2000')
conf_file="data.ini"
log_file ="result.log"
lineip=[]
linemn=[]
class MyThread(threading.Thread):
??? def __init__(self, func, dip):
??????? threading.Thread.__init__(self)
??????? self.func = func
??????? self.args = dip
??? def run(self):
??????? apply(self.func, self.args)
def OpenFile():
??? fp=file(conf_file)
??? for line in fp:
???????? lines=line.split("=")
???????? linemn.append(lines[0].strip())
???????? lineip.append(lines[1].strip())
??? return lineip,linemn
??? fp.close()
def ToLog(*results):
??? result=""
??? for lineresult in results:
??????? result=result+lineresult+","
??? result=result[0:-1]+"\n"
??? fp=file(log_file,'a')
??? fp.write(result)
??? fp.close()
def Getime():
??? return time.strftime("%Y/%m/%d %X")
def Ping(psize,dip,idcname):
??????? pingstr="ping -c 10 -s "+psize+" "+dip?
??????? Process(pingstr,idcname,dip,psize)
def Process(pingstr,idcname,dip,psize):
??? strping = pingstr
??? idc = idcname
??? idcip = dip
??? packsz = psize
??? result = os.popen(pingstr).readlines()
??? cur_time=Getime()
??? result2=str(result[-1].strip())
??? if not result2.endswith('loss'):
??????? totalloss=result[-2].split(",")[2].split('%')[0]
??????? result3=result[-1].split("=")[1].split('/')
??????? ToLog(idc,idcip,cur_time,packsz,result3[0],result3[1],result3[2],totalloss)
??? else:
??????? cur_time=Getime()
??????? ToLog(idc,idcip,cur_time,packsz,'0','0','0','100')
def main():
??? threads = []
??? ipmn=OpenFile()
??? ip=ipmn[0]
??? idcname=ipmn[1]
??? nloops = range(len(ip))
??? for i in nloops:
??????? for psize in size:
??????????? t = MyThread(Ping,(psize,ip[i],idcname[i]))
??????????? threads.append(t)
??? threadnum=range(len(threads))
??? for i in threadnum:
??????? threads[i].start()
??? for i in threadnum:
??????? threads[i].join()
if __name__ == '__main__':
[腳本如下:]
#!/usr/bin/env python
#Create by badboy
#2009/11/22
'''multithreading ping for checking IDC status!'''
import threading
import os
import time
size = ('20','2000')
conf_file="data.ini"
log_file ="result.log"
lineip=[]
linemn=[]
class MyThread(threading.Thread):
??? def __init__(self, func, dip):
??????? threading.Thread.__init__(self)
??????? self.func = func
??????? self.args = dip
??? def run(self):
??????? apply(self.func, self.args)
def OpenFile():
??? fp=file(conf_file)
??? for line in fp:
???????? lines=line.split("=")
???????? linemn.append(lines[0].strip())
???????? lineip.append(lines[1].strip())
??? return lineip,linemn
??? fp.close()
def ToLog(*results):
??? result=""
??? for lineresult in results:
??????? result=result+lineresult+","
??? result=result[0:-1]+"\n"
??? fp=file(log_file,'a')
??? fp.write(result)
??? fp.close()
def Getime():
??? return time.strftime("%Y/%m/%d %X")
def Ping(psize,dip,idcname):
??????? pingstr="ping -c 10 -s "+psize+" "+dip?
??????? Process(pingstr,idcname,dip,psize)
def Process(pingstr,idcname,dip,psize):
??? strping = pingstr
??? idc = idcname
??? idcip = dip
??? packsz = psize
??? result = os.popen(pingstr).readlines()
??? cur_time=Getime()
??? result2=str(result[-1].strip())
??? if not result2.endswith('loss'):
??????? totalloss=result[-2].split(",")[2].split('%')[0]
??????? result3=result[-1].split("=")[1].split('/')
??????? ToLog(idc,idcip,cur_time,packsz,result3[0],result3[1],result3[2],totalloss)
??? else:
??????? cur_time=Getime()
??????? ToLog(idc,idcip,cur_time,packsz,'0','0','0','100')
def main():
??? threads = []
??? ipmn=OpenFile()
??? ip=ipmn[0]
??? idcname=ipmn[1]
??? nloops = range(len(ip))
??? for i in nloops:
??????? for psize in size:
??????????? t = MyThread(Ping,(psize,ip[i],idcname[i]))
??????????? threads.append(t)
??? threadnum=range(len(threads))
??? for i in threadnum:
??????? threads[i].start()
??? for i in threadnum:
??????? threads[i].join()
if __name__ == '__main__':
??? main()
本文轉自hahazhu0634 51CTO博客,原文鏈接:http://blog.51cto.com/5ydycm/231835,如需轉載請自行聯系原作者
總結
- 上一篇: linux中三个time:atime、m
- 下一篇: 计蒜客 时间复杂度 (模拟) 洛谷 P