免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18994 | 回复: 9
打印 上一主题 下一主题

ip匹配IP段 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-15 17:36 |只看该作者 |倒序浏览
IP段

1.56.0.0 - 1.63.255.255
1.68.0.0 - 1.71.255.255
1.80.0.0 - 1.95.255.255
1.116.0.0 - 1.119.255.255
1.180.0.0 - 1.183.255.255
1.184.0.0 - 1.185.255.255
110.51.0.0 - 110.51.255.255
110.52.0.0 - 110.53.255.255
110.156.0.0 - 110.163.255.255
59.191.0.0 - 59.191.127.255
59.191.240.0 - 59.191.255.255
59.192.0.0 - 59.255.255.255
60.0.0.0 - 60.31.255.255
60.55.0.0 - 60.55.255.255
60.63.0.0 - 60.63.255.255

IP列表
218.76.73.33:8081
201.72.255.68:8080
202.94.233.141:80
118.96.129.106:8080
213.209.186.133:8000
213.242.224.238:3128
174.142.104.57:3128
220.247.245.117:80
201.20.18.165:3128
121.28.34.69:8088
117.40.29.89:80
202.108.5.35:8080
58.61.156.183:80
202.129.58.66:80
94.85.188.146:8080

当然IP列表不会这么少

想IP列表的IP匹配IP段里的 我想了半天  实在没啥简单的方法  多谢 
 

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
2 [报告]
发表于 2010-10-15 17:47 |只看该作者
化成长整数,然后二分查找。

哥会做,可惜下班了

论坛徽章:
0
3 [报告]
发表于 2010-10-15 18:01 |只看该作者
到家后帮忙看看啊 

论坛徽章:
0
4 [报告]
发表于 2010-10-15 19:06 |只看该作者
  1. awk 'BEGIN{FS="[:| |.]"}NR==FNR{for(c=$2;c<=$7;c++)arr[$1" "c]=$0;next}{if($1" "$2 in arr)print $0,arr[$1" "$2];else print $0,"None"}' file file1
复制代码
file为ip段
file1为ip

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
5 [报告]
发表于 2010-10-16 08:20 |只看该作者
回复 3# Gray1982


     睡了一觉起来了
  1. awk '                       
  2. function ip2n(ip) { split(ip,a,"."); return a[1]*256^3+a[2]*256^2+a[3]*256+a[4] }

  3. BEGIN {FS="[-: ]+"}   
  4. NR==FNR{fuck[$1]=$2;next}
  5.      {
  6.       for (i in fuck)
  7.        { if(ip2n($1)>=ip2n(i) && ip2n($1)<=ip2n(fuck[i]) )print $0"  in " i,fuck[i]

  8.         }
  9.     }' p_range ip
复制代码
==== 靠,你给的例子没有一个命中的,我还以为自己写错了呢,自己举了个例子才发现,╮(╯▽╰)
这个是结果:
  1. 10.1.1.3:21  in 10.0.0.0 10.255.255.255
  2. 192.168.0.100:8080  in 192.168.0.0 192.255.255.255

复制代码
你ip_range不多的话可以用这个,假如很多的话这个效率可能不行(比如几十万行),随后我写个二分法。你也可以参考http://bbs.chinaunix.net/viewthread.php?tid=1794824
自己写一个。
这个原理是什么,自己搜下吧。懒得打字了。大周末的还帮你完成工作。悲剧

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
6 [报告]
发表于 2010-10-16 09:50 |只看该作者
搞个难点的,效率未知,请自测。以下所有都不解释,自己想。

1。首先sort -t\. -k1,1n -k2,2n -k3,3n -k4,4n ip段 >ip_range

2。
  1. awk '                       
  2. function ip2n(ip) { split(ip,a,"."); return a[1]*256^3+a[2]*256^2+a[3]*256+a[4] }

  3. BEGIN {FS="[-: ]+"}      

  4. NR==FNR {

  5.        fuck[k++] = $0;next }

  6.      {               

  7.         start = 0

  8.         end = k - 1        

  9.         while(start <= end) {

  10.               mid =int(start+ ((end - start)/2))
  11.                 split(fuck[mid], kao)

  12.                 if(ip2n($1) < ip2n(kao[1]))

  13.                         end = mid-1

  14.                 else if(ip2n($1) > ip2n(kao[2]))

  15.                         start = mid+1

  16.                 else {
  17.                        print $0 " in \t\t"fuck[mid]

  18.                         break

  19.                 }

  20.         }
  21. }'  ip_range ip
复制代码
===================
至于效率自己想,到底哪个好看你的情况了。不解释,懒得打字,想研究的话自己搜搜。

后记:第一次在某个群里发了这个东西,某个人说我“闲的无聊,搞这个有什么用”,当时我很淡定的冷笑了懒得回他。无知者无畏,没用的话大师们也不会搞这个二分查找算法。关键看你脑子想得到没有,前人把轮子造好了,你不会用还怪轮子歪,只能说明自己浅薄无知。
希望他能看到这个贴,当然看不到也没关系,我以前也有过类似的想法,只要不断进步,就会发现自己的无知和浅薄。

最后一句:There is no limit to learn,继续谦虚学习呵呵。

楼上和这个我都测试过OK了,有问题也不要联系我,打印的结果不符合要求自己改。
附我测试的文件格式如下。
~# cat ip_rang
  1. .........省略若干...........
  2. 60.63.0.0 - 60.63.255.255
  3. ......省略若干.......
复制代码
~#cat ip
  1. ....... 省略若干.....
  2. 192.168.0.100:caodan
  3. .......省略若干。。。
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-10-16 11:14 |只看该作者
感谢 lkk2003rty (小毛孩)  expert1 (平安是福)  
问题是解决了 不过我需要好好看看


麻烦问以上2位 这个题你那多久就有思路了 只要别告诉我看一眼就想出来就行了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
8 [报告]
发表于 2010-10-16 12:02 |只看该作者
回复 7# Gray1982


    看2眼就会了,这有什么可说的,见多识广而已。

论坛徽章:
0
9 [报告]
发表于 2010-10-16 16:57 |只看该作者
LS蛋疼

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2010-10-16 17:34 |只看该作者
补零去点挨个比,体力活
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP