Python2.7 Mtr路由跟蹤解析IP

因爲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


參考:http://docs.python.org/2/library/ json

相關文章
相關標籤/搜索