import sys,re

 ip_1_stat = {}
source_fp = open("ip_region","r")
p = re.compile("(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})")
for line in source_fp:
line = line.strip()
list = line.split('|') start = p.match(list[0].strip())
end = p.match(list[1].strip()[:-3])
region = list[2].strip() if start and end:
key = start.group(1)
if key not in ip_1_stat:
ip_1_stat[key] = {"line":{}}
if line not in ip_1_stat[key]["line"]:
ip_1_stat[key]["line"][line] = {"s2":int(start.group(2)), "s3":int(start.group(3)), "s4":int(start.group(4)), "e2":int(end.group(2)), "e3":int(end.group(3)), "e4":int(end.group(4)), "prov":region}
source_fp.close() #ip index
index = sys.argv[1] for line in sys.stdin:
line = line.strip()
list = line.split('\t') ip = list[index].strip()
#ip = list[2].strip()
match = p.match(ip)
i1 = match.group(1)
i2 = int(match.group(2))
i3 = int(match.group(3))
i4 = int(match.group(4))
prov = "NotFound" key = i1
if key not in ip_1_stat:
continue flag = 0
#ergodic
for l in ip_1_stat[key]["line"]:
#start
if i2 > ip_1_stat[key]["line"][l]["s2"]:
flag = 1
elif i2 == ip_1_stat[key]["line"][l]["s2"]:
if i3 > ip_1_stat[key]["line"][l]["s3"]:
flag = 1
elif i3 == ip_1_stat[key]["line"][l]["s3"]:
if i4 >= ip_1_stat[key]["line"][l]["s4"]:
flag = 1
#flag
if flag == 0:
continue #end
if i2 < ip_1_stat[key]["line"][l]["e2"]:
flag = ip_1_stat[key]["line"][l]["prov"]
elif i2 == ip_1_stat[key]["line"][l]["e2"]:
if i3 < ip_1_stat[key]["line"][l]["e3"]:
flag = ip_1_stat[key]["line"][l]["prov"]
elif i3 == ip_1_stat[key]["line"][l]["e3"]:
if i4 <= ip_1_stat[key]["line"][l]["e4"]:
flag = ip_1_stat[key]["line"][l]["prov"]
if flag != 1:
break print "%s\t%s" % (line, flag)

IP解析的更多相关文章

  1. IP工具类-自己动手做个ip解析器

    IP工具类-自己动手做个ip解析器 一.资料准备 导入依赖包:

  2. dubbo注册服务IP解析异常及IP解析源码分析

    在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...

  3. 动态IP解析

    本文介绍两种方便获取主机动态IP的方式(DDNS,IP报告网页),并给出相应的代码实现. shell脚本获取本机IP,执行上传操作和更新DNS操作.定期执行通过crontab或者systemd等服务. ...

  4. github开源的一些ip解析 ,运营商信息,经纬度 地址 后续开发使用

    https://github.com/wzhe06/ipdatabase  ip解析 https://github.com/flyaction/ipdatabase 比较新 https://githu ...

  5. 万网云解析全面升级开放,支持海外IP解析!

    基于万网过去18年来的专业域名解析服务经验,万网云解析新版实现了承载超过300万域名的全面升级,它是万网DNS域名解析系统的全新升级,目前已正式发布上线,详见万网首页:http://www.net.c ...

  6. 开发一个简单的ip解析webservice接口,并用springmvc生成客户端调用

    1.创建webservice工程,这次先采用jax-ws框架,下次再尝试jax-rs(restful) 2.写个实现ip解析的类,接收传入的ip,并返回解析信息 3.Myeclipse——>Ne ...

  7. Hive UDF IP解析(二):使用geoip2数据库自定义UDF

    开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...

  8. 更新TP-LINK路由器的外网IP到花生壳动态IP解析

    ------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...

  9. DNS寻址以及IP解析

    域名解析从右向左 DNS寻址: 1 客户端发送查询请求,在本地计算机缓存查询,若没有找到,就会将请求发送给dns服务器 2 先发送给本地的dns服务器,现在自己的区域内查找,若找到,根据此记录进行查询 ...

  10. IP解析计算机名称

    #-*- coding: UTF-8 -*- import subprocess,sys,threading reload(sys) sys.setdefaultencoding('utf-8') d ...

随机推荐

  1. [Angular] Difference between Providers and ViewProviders

    For example we have a component: class TodoList { private todos: Todo[] = []; add(todo: Todo) {} rem ...

  2. tensorflow 函数接口的理解

    1. tf.nn.softmax tf.nn.softmax(logits, dim=-1, name=None) w*x+b ⇒ logits softmax 函数执行的操作:exp(logits) ...

  3. 快速删除 jar 里面的 BuildConfig.class

    快速删除 jar 里面的 BuildConfig.class 起因:多个 jar 包里面的 BuildConfig.class 文件导致编译冲突. 方法一:土方法 使用 jar 解包 jar xf x ...

  4. TensorFlow 实战(二)—— tf.train(优化算法)

    Training | TensorFlow tf 下以大写字母开头的含义为名词的一般表示一个类(class) 1. 优化器(optimizer) 优化器的基类(Optimizer base class ...

  5. error: expected declaration or statement at end of input----solved

    error: expected declaration or statement at end of input 解决方法: 1.程序缺少一个括号相应地 2.而不添加头文件 版权声明:本文博主原创文章 ...

  6. Chrome和FireFox中年份显示为113年的解决方法

    下面是段简单的JS显示时间代码片段: <script language="javascript" type="text/javascript"> v ...

  7. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  8. 1.通过模板创建MAP版本项目

    1.选择mpa+ef+module-zero 取名字 2.用vs打开项目后,在解决方案上右键 还原nuget包 3.打开程序包管理器控制台,选择以EntityFramework结尾的项目,并执行upd ...

  9. python3获取天气预报

    #!/usr/local/bin/python3 #coding=utf-8 ''' Created on 2011-2-25 @author: http://www.cnblogs.com/txw1 ...

  10. SQL查询表结构 相关语句

    --查看列注释select * from all_col_comments where table_name=upper('XXXXX')--查看表结构select * from user_tab_c ...