您的位置:首页 > 编程语言 > Python开发

python 实现 ip138 作用

2014-01-24 11:29 447 查看
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# the script is used to query the location of every ip

import urllib

import json

#import sys

import re

from optparse import OptionParser

#淘宝ip库接口

url = "http://ip.taobao.com/service/getIpInfo.php?ip="

def ip_location(ip):

        data = urllib.urlopen(url + ip).read()

        datadict=json.loads(data)

#        list =[]

        for oneinfo in datadict:

                if "code" == oneinfo:

                        if datadict[oneinfo] == 0:

                            return datadict["data"]["country"] + datadict["data"]["region"] + datadict["data"]["city"].ljust(40) + datadict["data"]["isp"]

#parser = OptionParser()

parser = OptionParser(usage="%prog [-i] <ip> [-f] <filename>", version="%prog 1.0")

parser.add_option("-f", "--file",

                  dest="filename",

                  help="read IP from this file",

                  metavar="FILE")

parser.add_option("-i", "--ip",

                  action="store",

                  dest="ips",

                  help="one ip like this 192.168.1.1")

(options,args) = parser.parse_args()

if len(args) !=1:

    print parser.usage

if options.filename:

    ipadd = r'\.'.join([r'\d{1,3}']*4)

    re_ip = re.compile(ipadd)

    fd=open(options.filename)

    alllines=fd.readlines()

    fd.close()

    for line in alllines:

        match = re_ip.match(line)

        if match:

            ip = match.group( )

            print ip_location(ip)

if options.ips:
    print ip_location(options.ips)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

灵感来自第一篇的nginx 日志分析脚本,因为在运维的工作中免不了查看某个Ip来自什么地方,尤其怀疑服务器遭受攻击,每次总要把ip复制到ip138 上一个一个查,效率甚低,这个小脚本可以让你的查询速度倍增,而且不离开命令行;

测试:

使用帮助看:

运维路上有你有我也有他,机油互相帮助,才能互相进步!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: