windows下用python實現ping


我使用的方法是直接運行ping程序,從結果中正則匹配出想要的數據。

不同的系統中,匹配過程可能有差別。

# -*- coding:utf8 -*-
#!/usr/bin/python
import subprocess    
import re

class LinkState(object):
    def __init__(self,ip):
        self.ip = ip
        self.getLinkState(self.ip)

    # 獲取鏈路狀態
    def getLinkState(self,ip):
        #運行ping程序
        p = subprocess.Popen(["ping.exe", ip], 
             stdin = subprocess.PIPE, 
             stdout = subprocess.PIPE, 
             stderr = subprocess.PIPE, 
             shell = True)  

        #得到ping的結果
        out = p.stdout.read()  
        # print out

        #找出丟包率,這里通過‘%’匹配
        regex = re.compile(r'\w*%\w*')
        packetLossRateList = regex.findall(out)
        self.packetLossRate = packetLossRateList[0]

        #找出往返時間,這里通過‘ms’匹配
        regex = re.compile(r'\w*ms')
        timeList = regex.findall(out)
        self.minTime = timeList[-3]
        self.maxTime = timeList[-2]
        self.averageTime = timeList[-1]

        self.showResult()

    #輸出結果    
    def showResult(self):
        result = {'packetLossRate':self.packetLossRate,'minTime':self.minTime,'maxTime':self.maxTime,'averageTime':self.averageTime}
        print result

if __name__ == '__main__':
    ip = 'baidu.com'    #要ping的主機
    LinkState(ip)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM