Python判断IP是否属于某子网
2015-11-04 15:07
786 查看
直接上代码:
<pre name="code" class="python"># _*_ coding: utf-8 _*___author__ = 'Hondsam Xu <hondsam@hotmail.com>'import socket,struct'''转换为子网地址,并检验和输出正确的子网地址192.168.2.1 -> 192.168.2.1/255.255.255.255192.168.2.1/24 -> 192.168.2.0/255.255.255.0192.168.2.1/255.255.255.0 -> 192.168.2.0/255.255.255.0'''def format_subnet(subnet_input):# 如果输入的ip,将掩码加上后输出if subnet_input.find("/") == -1:return subnet_input + "/255.255.255.255"else:# 如果输入的是短掩码,则转换为长掩码subnet = subnet_input.split("/")if len(subnet[1]) < 3:mask_num = int(subnet[1])last_mask_num = mask_num % 8last_mask_str = ""for i in range(last_mask_num):last_mask_str += "1"if len(last_mask_str) < 8:for i in range(8-len(last_mask_str)):last_mask_str += "0"last_mask_str = str(int(last_mask_str,2))if mask_num / 8 == 0:subnet = subnet[0] + "/" + last_mask_str +"0.0.0"elif mask_num / 8 == 1:subnet = subnet[0] + "/255." + last_mask_str +".0.0"elif mask_num / 8 == 2 :subnet = subnet[0] + "/255.255." + last_mask_str +".0"elif mask_num / 8 == 3:subnet = subnet[0] + "/255.255.255." + last_mask_strelif mask_num / 8 == 4:subnet = subnet[0] + "/255.255.255.255"subnet_input = subnet# 计算出正确的子网地址并输出subnet_array = subnet_input.split("/")subnet_true = socket.inet_ntoa(\struct.pack("!I",struct.unpack("!I",socket.inet_aton(subnet_array[0]))[0] & \struct.unpack("!I",socket.inet_aton(subnet_array[1]))[0]))\+ "/" + subnet_array[1]return subnet_true# 判断ip是否属于某个网段def ip_in_subnet(ip,subnet):subnet = format_subnet(str(subnet))subnet_array = subnet.split("/")ip = format_subnet(ip + "/" + subnet_array[1])return ip == subnetprint (ip_in_subnet("192.168.2.252","192.168.0.0/255.255.0.0"))print (ip_in_subnet("192.168.2.252","192.168.3.0/255.255.255.0"))print (ip_in_subnet("192.168.2.252","192.168.2.0/23"))print (ip_in_subnet("192.168.2.252","192.168.2.0/29"))print (ip_in_subnet("192.168.2.2","192.168.2.2"))print (ip_in_subnet("192.168.2.2","192.168.2.3"))
相关文章推荐
- 如何面试Python后端工程师?
- python os.popen os.system
- python logging 模块
- 建议10:numpy使用基础
- 老李分享:Python开发性能测试脚本
- 2015/11/4用Python写游戏,pygame入门(4):获取鼠标的位置及运动
- Python压缩解压缩zip文件及破解zip文件密码的方法
- Python 入門語法和類型
- Python 编码风格指南中译版(Google SOC)
- Python学习之二:Python 与 C 区别
- Python定义函数,模块导入以及Python主程序文件结构
- 建议13:使用Python模块re实现解析小工具
- python包模块实例
- python3.3+selenium
- python模块以及导入出现ImportError: No module named 'xxx'问题
- python爬虫初体验(百度贴吧)
- python问题之requests\packages\urllib3\util\ssl_.py:100: InsecurePlatformWarning
- Python的@修饰符和装饰器
- python查看模块文档
- 【python】os模块常用命令