由于Openstack的原因,刚刚接触python,就看了三天语法,知道代码不优雅很挫,各位看了有什么好的思路提醒一下。
在linux在做路由跟踪时,在某一跳出问题时,并不知道是哪里的ISP有问题,在找到中断ip后必去查该ip的ISP才知道哪里路由有问题,但是每次查找都很麻烦,所以想在得出路由跟踪ip后直接查找ip的ISP并显示出来多好啊,IP库使用taobao的API接口。
#!/usr/bin/python
import json,os,sys,socket,urllib2
ipadd=sys.argv[1]
osname=socket.gethostname()
st1='mtr -n -i 0.3 -c 10 -r -w'+' '+ ipadd+' '+'> /tmp/ipres'
def GetIp(o):
respone=urllib2.urlopen('http://ip.taobao.com/service/getIpInfo.php?ip='+o)
t=respone.read()
data=json.loads(t)
return data['data']['country'],data['data']['city'],data['data']['isp']
os.system(st1)
fp=open('/tmp/ipres')
print 'HOST: ' + osname + ' Loss% Snt Last Avg Best Wrst StDev ISP'
for i in fp.readlines()[1:]:
t=i.strip()
for p in i.strip().split()[1:2]:
if p == '???':
x='Forbid ICMP detect '
print t + ' ' + x
elif p == '`|--':
del p
elif p == '|--':
del p
else:
z,x,y=GetIp(p)
if z == 'IANA':
z='internet IP'
print t + ' ' + z + x + y
fp.close()
os.remove('/tmp/ipres')
测试图如下:
参考:http://docs.python.org/2/library/