python 27下实现,python3下可能会报错
采用socket的方式,能实现统计每个ip的总耗时。也可采用调用windows的ping命令。
#!/usr/bin/env python #coding:GBK ''' author: wikeryong date: 2013-09-14 09:35:59 ''' import socket import sys import time import datetime import codecs import smtplib from email.mime.text import MIMEText from email.header import Header import ctypes import random ctypes.windll.kernel32.SetConsoleTitleA("Ping 工具 by wikeryong") ip_list=[ ['www.baidu.com',80,'百度',0]] ] totalCount=0 def t(): return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) def w(content): print '[%s] %s' %(t(),content) file_object = open('ping.'+time.strftime('%Y-%m-%d',time.localtime(time.time()))+'.log', 'a') file_object.write('[%s] %s\n' %(t(),content)); file_object.close() if __name__=='__main__': #global totalCount while True: totalCount+=1 for i in range(len(ip_list)): startTime = datetime.datetime.now() try: IP=ip_list[i][0] PORT=ip_list[i][1] remark=ip_list[i][2] cs=socket.socket(socket.AF_INET,socket.SOCK_STREAM) address=(IP,PORT) status = cs.connect_ex((address)) cs.settimeout(60) #this status is returnback from tcpserver endTime=datetime.datetime.now() ip_list[i][3]=int((endTime-startTime).total_seconds()*1000)+ip_list[i][3] if status != 0 : w('Ping%s,IP=%s,PORT=%d,Time=%dms,总耗时=%dms' %(remark,IP,PORT,int((endTime-startTime).total_seconds()*1000),ip_list[i][3])) else: w('Ping%s,IP=%s,PORT=%d,Time=%dms,总耗时=%dms' %(remark,IP,PORT,int((endTime-startTime).total_seconds()*1000),ip_list[i][3])) except Exception ,e: ip_list[i][3]=int((endTime-startTime).total_seconds()*1000)+ip_list[i][3] endTime=datetime.datetime.now() w('Ping%s,IP=%s,PORT=%d,Time=%dms,总耗时=%dms' %(remark,IP,PORT,int((endTime-startTime).total_seconds()*1000),ip_list[i][3])) time.sleep(1) w('------------------------ 次数:%d --------------------------'%totalCount) time.sleep(10)