IP解析
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解析的更多相关文章
- IP工具类-自己动手做个ip解析器
IP工具类-自己动手做个ip解析器 一.资料准备 导入依赖包:
- dubbo注册服务IP解析异常及IP解析源码分析
在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...
- 动态IP解析
本文介绍两种方便获取主机动态IP的方式(DDNS,IP报告网页),并给出相应的代码实现. shell脚本获取本机IP,执行上传操作和更新DNS操作.定期执行通过crontab或者systemd等服务. ...
- github开源的一些ip解析 ,运营商信息,经纬度 地址 后续开发使用
https://github.com/wzhe06/ipdatabase ip解析 https://github.com/flyaction/ipdatabase 比较新 https://githu ...
- 万网云解析全面升级开放,支持海外IP解析!
基于万网过去18年来的专业域名解析服务经验,万网云解析新版实现了承载超过300万域名的全面升级,它是万网DNS域名解析系统的全新升级,目前已正式发布上线,详见万网首页:http://www.net.c ...
- 开发一个简单的ip解析webservice接口,并用springmvc生成客户端调用
1.创建webservice工程,这次先采用jax-ws框架,下次再尝试jax-rs(restful) 2.写个实现ip解析的类,接收传入的ip,并返回解析信息 3.Myeclipse——>Ne ...
- Hive UDF IP解析(二):使用geoip2数据库自定义UDF
开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...
- 更新TP-LINK路由器的外网IP到花生壳动态IP解析
------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...
- DNS寻址以及IP解析
域名解析从右向左 DNS寻址: 1 客户端发送查询请求,在本地计算机缓存查询,若没有找到,就会将请求发送给dns服务器 2 先发送给本地的dns服务器,现在自己的区域内查找,若找到,根据此记录进行查询 ...
- IP解析计算机名称
#-*- coding: UTF-8 -*- import subprocess,sys,threading reload(sys) sys.setdefaultencoding('utf-8') d ...
随机推荐
- [转]erlang ranch
一. ranch app启动: ranch_sup -> ranch_server % 创建ets, 并提供接口给其他进程读写 二. 启动diy app (监听模块: 用ranch_tcp -& ...
- hbase 从hdfs上读取数据到hbase中
<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifact ...
- 一个完整配置例nginx.conf(生产环境中使用)
一个完整的nginx配置案例,生产环境 一个完整配置例(生产环境中使用) user nobody nobody; worker_processes 4; worker_rlimit_nofile 51 ...
- Android Studio 报错Guest isn't online after 7 seconds 解决方案
最近使用真机模拟之后,再使用虚拟机就频繁出现这个问题; 解决步骤如下: 1.打开Android虚拟设备管理器, 2.查看Actoins栏下拉图标, 3.选择冷启动模式即可, 4.重启AVD正常;
- 前端后端分离,怎么解决SEO优化的问题呢?
对于90%以上的互联网公司来说,前后端分离是必须要做的.目前接手的公司的一个工程,后端是PHP,用的smarty模板,开发效率和之前公司的完全分离相比,确实低不少,一方面需要前端会PHP,另一方面沟通 ...
- Cython 的学习
开发效率极高的 Python 一直因执行效率过低为人所诟病,Cython 由此诞生,特性介于 Python 和 C 语言之间. Cython 学习 1. Cython 是什么? 它是一个用来快速生成 ...
- yii联查
$count = Acticle::find()->select("acticle_type.act_type,acticle.act_id,acticle.act_title,act ...
- Creating Apps With Material Design —— Defining Custom Animations
转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出.谢谢 定义动画 在材料设计动画让用户与您的应用程序 ...
- prototype __proto__ Function
我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象.(注意:是函数才有prototype属性) 而__proto__属性每一个对象都有. 在js中如果A对象是由B函数构 ...
- windows通过使用xShell远程linux上传文件
上传文件rz与sz命令,远程linux您需要在系统上安装lrzsz工具包 安装例如,下面的: [xxxx@xxxx /]# yum install lrzsz 注意:我用命令yum,假设在Intern ...