Python ping工具的实现代码(可配置多个ip地址)

发布时间:2019-08-02编辑:脚本学堂
本文介绍下,python实现的一例ping工具代码,可以配置多个IP地址,在python2.7环境中实现的,有需要的朋友参考下吧。

本节内容:
python实现的ping工具。

环境:python 2.7
python 3环境下未测试,可能会报错。

本例代码采用socket的方式,可以实现统计每个ip的总耗时。
也可采用调用windows的linuxjishu/14094.html target=_blank class=infotextkey>ping命令。

代码:
 

复制代码 代码示例:
#!/usr/bin/env python 
#coding:GBK 
#site www.jb200.com
 
'''''
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] %sn' %(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)