网工会经常做一件事情,就是在排查网络故障的时候,通过traceroute目的IP的方式,然后打开百度或者谷歌,查其中某一跳的IP地址属于那个城市,ISP信息。
这个效率比较低,下面我通过淘宝IP地址库提供的API封装一个小工具,就可以实时查询IP地址了。有2个版本,一个是Linux 命令行版,另一个是GUI版本;
淘宝IP地址库地址:http://ip.taobao.com
接口地址:http://ip.taobao.com/instructions.php
使用的模块:
1、json
由于接口返回的数据是json格式,自然就需要解析json的模块;
2、urllib
这个用于发起http请求,并返回数据,值得注意的是python 2.X版本和3.X版本存在差异;
3、tkinter
这个是python自带的GUI模块,简介用起来挺方便的;
4、sys
Linux版本通过sys模块的argv获取命令行参数
5、ctypes
该模块是在window GUI版当中,为了隐藏console这个黑色大框框用的;
Linux 命令行版:
说明
1、python版本2.7.3
2、整个代码分三个函数:
a)get_data——用于发起http请求,返回json格式数据;
b)process_data——处理数据,取出需要的信息,如ISP、国家、省市等信息;
c)output_data——格式化输出数据;
运行效果
./queryip.py 61.135.157.156
country area region city county isp
中国 华北 北京市 北京市 NULL 联通
代码实现
#!/usr/local/bin/python
#-*- coding: utf-8 -*-
import json
import urllib
import sys
def get_data(ip):
API = "http://ip.taobao.com/service/getIpInfo.php?ip="
url = API + sys.argv[1]
jsondata = json.loads(urllib.urlopen(url).read())
if jsondata['code'] == 1:
print("No %s info."