Python 实现ping工具。可配置多个ip

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)
    
    





你可能感兴趣的:(Python 实现ping工具。可配置多个ip)