| #用python3写的获取Google亚洲ip速度。结果放在ip.txt中,win下使用。 |
| #--*-- coding:utf-8 --*-- |
| import os.path |
| import threading |
| import re |
| #ip数据 |
| ip_all=['173.194.38.','173.194.72.','173.194.117.','173.194.120.', |
| '173.194.123.','173.194.126.','173.194.127.','74.125.23.', |
| '74.125.31.','74.125.37.','74.125.135.','74.125.200.', |
| '74.125.203.','74.125.204.','74.125.235.','74.125.236.', |
| '74.125.237.',] |
| #线程中文件写入锁 |
| file_lock=threading.Lock() |
| #线程中输出锁 |
| print_lock=threading.Lock() |
| #执行 win下的 ping.exe 命令,获取数据。 |
| def p(ippp,n=10): |
| 'p函数,ip为ip地址,n为测试包数量,返回ip地址和最小时间。' |
| cmd='ping -n '+str(n)+' ' + str(ippp) |
| #print(cmd,end='\n') |
| a=os.popen(cmd).readlines() |
| return( ippp+'\t '+ a[-1].strip().split(',')[2] +'\n') |
| #线程类 |
| class ping_thread (threading.Thread): |
| def __init__(self,thread_id,ip1,n1=10): |
| '初始化。' |
| threading.Thread.__init__(self) |
| self.thread_id=thread_id |
| self.ip5=ip1 |
| self.n5=n1 |
| def run(self): |
| '重新定义运行内容。' |
| print_lock.acquire() |
| print('Starting: %s \n' % self.ip5) |
| print_lock.release() |
| a=p(self.ip5,self.n5) |
| file_lock.acquire() |
| with open('ip.txt','a+') as ff: |
| ff.write(a) |
| file_lock.release() |
| print_lock.acquire() |
| print('Finish: %s \n' % self.ip5) |
| print_lock.release() |
| #运行线程,每次255个。 |
| def run_ping(n5=10): |
| for ee in ip_all: |
| c=[] |
| for i in range(1,255): |
| f=str(ee)+str(i) #生成ip |
| g=ping_thread(f,f,n5) |
| c.append(g) |
| g.start() |
| for t in c: |
| t.join() #等待线程结束 |
| print('Ping %s ok \n' % ee) |
| #对数据进行分析 |
| def ipdata_fx(): |
| findstr='(\d+.\d+.\d+.\d+).+= (\d+)ms' |
| restr=re.compile(findstr) |
| ipdata=[] |
| ip=[] |
| with open('ip.txt') as f: |
| for a in f.readlines(): |
| #print(a) |
| fd=restr.findall(a) |
| if fd : |
| ipdata.append([int(fd[0][1]),fd[0][0]]) |
| ipdata.sort() #排序 |
| ipdata_aa = map(lambda x : str(x[0])+'\t'+x[1] ,ipdata) |
| b="\n".join(ipdata_aa) |
| print(b) |
| with open('myip.txt','a+') as mf: |
| mf.write(b) |
| yy=map(lambda x : x[1].strip(),ipdata) |
| yy_mm="|".join(yy) |
| print(yy_mm) |
| with open('myip_out.txt','a+') as df: |
| df.write(yy_mm+'\n') |
| if __name__ == '__main__' : |
| if (os.path.exists('ip.txt') == False): |
| run_ping() #获取数据 |
| ipdata_fx() #分析数据 |
2014年6月21日星期六
用python3写的获取Google亚洲ip速度
订阅:
博文评论 (Atom)
没有评论:
发表评论