Python 实现ping工具。可配置多个ip
python 27下实现,python3下可能会报错
采用socket的方式,能实现统计每个ip的总耗时。也可采用调用windows的ping命令。
#!/usr/bin/env python#coding:GBK'''author: wikeryongdate: 2013-09-14 09:35:59 '''import socketimport sysimport timeimport datetimeimport codecsimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport ctypesimport randomctypes.windll.kernel32.SetConsoleTitleA("Ping 工具 by wikeryong")ip_list=[ ['www.baidu.com',80,'百度',0]] ]totalCount=0def 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)