因爲Openstack的緣由,剛剛接觸python,就看了三天語法,知道代碼不優雅很挫,各位看了有什麼好的思路提醒一下。 php
在linux在作路由跟蹤時,在某一跳出問題時,並不知道是哪裏的ISP有問題,在找到中斷ip後必去查該ip的ISP才知道哪裏路由有問題,可是每次查找都很麻煩,因此想在得出路由跟蹤ip後直接查找ip的ISP並顯示出來多好啊,IP庫使用taobao的API接口。 python
#!/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')
測試圖以下: linux