import subprocess
import time
import platform
import re
def version():
return platform.system()+"-"+platform.version()
def os():
if ('Windows' == platform.system()):
return 0
elif ('Linux' == platform.system()):
return 1
def traceroute(ip):
data = []
if os()==0:
cmd=subprocess.check_output("tracert -d -w 200 %s" % ip)
cmd=cmd.decode('gbk')
pattern = "(\d+)(.*[\*ms<].*)\s+(\d+\.\d+\.\d+\.\d+)"
matchs = re.findall(pattern, cmd)
if not matchs:
return False
for m in matchs:
if len(m)!=3:
continue
t = 0
if 'ms' in m[1]:
t = m[1].strip().replace(' ', '').replace('*','').split('ms')[-2].strip()
t = float(t)
data.append({"hop":int(m[0]),"time":t,"site":m[2]})
continue
if '<' in m[1]:
t = m[1].strip().replace(' ', '').replace('*','').split('<')[-1].strip().replace("ms", "").replace("毫秒", '')
t = float(t)
data.append({"hop":int(m[0]),"time":t,"site":m[2]})
continue
return data
else:
cmd = subprocess.check_output(["/usr/bin/traceroute","-n",ip])
cmd = cmd.decode('utf-8')
pattern = "(\d+)\s+(\d+\.\d+\.\d+\.\d+)(.*[\*ms<].*)"
matchs = re.findall(pattern, cmd)
if not matchs:
return False
for m in matchs:
if len(m) != 3:
continue
t = 0
if 'ms' in m[2]:
t = m[2].strip().replace(' ', '').replace('*','').split('ms')[-2].strip()
t = float(t)
data.append({"hop": int(m[0]), "time": t, "site": m[1]})
continue
if '<' in m[2]:
t = m[2].strip().replace(' ', '').replace('*','').split('<')[-1].strip().replace("ms", "")
t = float(t)
data.append({"hop": int(m[0]), "time": t, "site": m[1]})
continue
return data
return False
python 实现跟踪路由route函数
最新推荐文章于 2023-03-16 14:44:14 发布