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)
    
    





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值