加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl计算IP所在的子网范围

发布时间:2020-12-15 21:00:14 所属栏目:大数据 来源:网络整理
导读:? 自定义的子网范围如下: 192.168.0.0/16 219.111.192.0/18 68.132.0.0/17 61.135.0.0/16 192.162.0.0/16 152.172.0.0/16 34.132.0.0/14 97.208.0.0/13 有以下几个IP:192.168.1.5 219.111.193.1 219.111.1.2,要求计算是否在以上自网之中,如果在,则输出

? 自定义的子网范围如下:

192.168.0.0/16
219.111.192.0/18
68.132.0.0/17
61.135.0.0/16
192.162.0.0/16
152.172.0.0/16
34.132.0.0/14
97.208.0.0/13
有以下几个IP:192.168.1.5 219.111.193.1 219.111.1.2,要求计算是否在以上自网之中,如果在,则输出此IP所在的自网
code:
?
 
 
  1. #!/usr/bin/perl?
  2. use?strict;?
  3. use?warnings;?
  4. use?Data::Dumper;?
  5. my?%hash;?
  6. while(<DATA>){?
  7. ????chomp;?
  8. ????my($ip,$netmask)=split///;?
  9. ????my?$ipbit?=?unpack("B32",pack("C4",?(split/./,$ip)));?
  10. ????my?$net?=?substr("$ipbit","$netmask");?
  11. ????push?@{$hash{$net}},?$ip,$netmask;?
  12. }?
  13. #print?Dumper?%hash;?
  14. my?@testip=qw{192.168.1.5?219.111.193.1?219.111.1.2};?
  15. foreach?my?$kipbit?(keys?%hash){?
  16. ????my?$netmask?=?$hash{$kipbit}[1];?
  17. ????my?$netip?=?$hash{$kipbit}[0];?
  18. ??????foreach?my?$testkip?(@testip){?
  19. ????????????my?$testipbit?=?unpack("B32",$testkip)));?#C4转化为char类型的数据类型,C4也可以写作CCCC,B32将IP地址转化为32位的bit。?
  20. ?????????????$testipbit?=?substr("$testipbit","$netmask");?
  21. ????????????if($kipbit?==?$testipbit){?
  22. ????????????????print?"$netip/$netmaskn";?
  23. ????????????}?
  24. ??????}?
  25. }?
  26. __DATA__?
  27. 192.168.0.0/16?
  28. 219.111.192.0/18?
  29. 68.132.0.0/17?
  30. 61.135.0.0/16?
  31. 192.162.0.0/16?
  32. 152.172.0.0/16?
  33. 34.132.0.0/14?
  34. 97.208.0.0/13?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读