import subprocess
import re
def delay_check(domain):
ping_result = {'result': 'ok'}
p = subprocess.Popen(
"ping -c 3 {0} \n".format(domain),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
out = p.stdout.read().decode('gbk')
regIP = r'\d+\.\d+\.\d+\.\d+'
regLost = r', (\d.*?%) packet loss'
regAverage = r'= (.*?) ms'
ip = re.search(regIP, out)
lost = re.findall(regLost, out)[0]
reaverage = re.findall(regAverage, out)
if reaverage:
average = reaverage[0].split('/')[1]
ping_result['average'] = float(average)
if ip:
ip = ip.group()
ping_result['ip'] = ip
if lost:
lost = lost.split(',')[1].lstrip()
lost = float(lost.replace('%', ''))
ping_result['lost'] = lost
if ping_result['lost'] >= 10:
# print(f"丢包率为:{ping_result['lost']}")
ping_result['result'] = '全部丢包'
if 'average' in ping_result:
if ping_result['average'] >= 300:
# print(f"延时过高,平均延时:{ping_result['average']}")
ping_result['result'] = f"延时过高{ping_result['average']}"
return ping_result
if __name__ == '__main__':
message = delay_check('192.168.80.121')
print(message)
01-25