摘要:首先要准备一个环境,安装插件,本人用的是提取的轻量级环境,所以直接下载官网的源码,解压后找到文件夹复制到环境目录的文件夹里即可。使用方法首先引入确定起始和结尾,无论多复杂都可以转换运行后输出结果
概述
两种情况,一种给的是IP 范围,给了一个区间例如
参考:http://www.cnblogs.com/amaoxi...
64.233.196.0-64.233.196.25#将这个范围内的IP 全部解析出来
另一种情况就是给了一个掩码地址,例如
192.168.1.0/24 或者192.168.1.0 255.255.255.0 #将这个掩码范围内的所有 IP 地址解析输出出来第一种情况范围
#coding:utf-8 def ip2num(ip): ips = [int(x) for x in ip.split(".")] return ips[0]<< 24 | ips[1]<< 16 | ips[2] << 8 | ips[3] def num2ip (num): return "%s.%s.%s.%s" % ((num >> 24) & 0xff, (num >> 16) & 0xff, (num >> 8) & 0xff, (num & 0xff)) #return "%s.%s.%s.%s" % ((num & 0xff000000)>>24,(num & 0x00ff0000)>>16,(num & 0x00000ff00)>>8,num & 0x000000ff) def gen_ip(ip): start ,end = [ip2num(x) for x in ip.split("-")] return [num2ip(num) for num in range(start,end+1) if num & 0xff] print gen_ip(64.233.196.0-64.233.196.25) 输入结果为: ["64.233.196.22", "64.233.196.23", "64.233.196.24", "64.233.196.25", "64.233.196.26", "64.233.196.27", "64.233.196.28", "64.233.196.29"] 利用0xff 把多生成的ip屏蔽掉 最后一句中 if num & 0xff 作用是过滤掉 最后一段为 0 的IP第二种情况掩码
利用 IPy 这个 python 自带的模块
from IPy import IP ip = IP("192.168.0.0/24") print ip.len() for x in ip: print(x)
反向解析名称、IP类型、IP转换等 >>> ip = IP("192.168.1.20") >>> ip.reverseNames() #反向解析地址格式 ["20.1.168.192.in-addr.arpa."] >>> ip.iptype() #私网类型 "PRIVATE" >>> IP("8.8.8.8").iptype() #公网类型 "PUBLIC" >>> IP("8.8.8.8").int() #转换为整型格式 134744072 >>> IP("8.8.8.8").strHex() #转换为十六进制格式 "0x8080808" >>> IP("8.8.8.8").strBin() #转换成二进制格式 "00001000000010000000100000001000" >>> print IP("0x8080808") #十六进制转换为IP格式 8.8.8.8 >>> print IP(134744072) #整型格式转换为IP格式 8.8.8.8 IP方法也支持网络地址的转换,例如根据IP和掩码产生网段格式 >>> print (IP("192.168.1.0").make_net("255.255.255.0")) 192.168.1.0/24 >>> print (IP("192.168.1.0/255.255.255.0",make_net=True)) 192.168.1.0/24 >>> print (IP("192.168.1.0-192.168.1.255",make_net=True)) 192.168.1.0/24 通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段,输出类型为字符串 >>> IP("192.168.1.0/24").strNormal(0) #无返回 "192.168.1.0" >>> IP("192.168.1.0/24").strNormal(1) #prefix格式 "192.168.1.0/24" >>> IP("192.168.1.0/24").strNormal(2) #decimalnetmask格式 "192.168.1.0/255.255.255.0" >>> IP("192.168.1.0/24").strNormal(3) #lastIP格式 "192.168.1.0-192.168.1.255"ps:
使用python将IP段范围转换成CIDR
因为最近在整理用于某些工具使用的IP段,像一些IP范围如:64.233.56.37-64.233.56.215,某些软件不支持,只支持像:64.233.56.37/26这样的CIDR格式,于是就在网上找了一下转换的方法,还真找到了不过是外语,这里简单记录下需要的工具。
首先要准备一个python环境,安装netaddr插件,本人用的是提取的轻量级python环境,所以直接下载官网的源码,解压后找到netaddr文件夹复制到python环境目录的lib文件夹里即可。
使用方法: # 首先引入netaddr import netaddr # 确定起始和结尾IP,无论多复杂都可以转换 startip = "64.233.56.37" endip = "64.233.56.215" cidrs = netaddr.iprange_to_cidrs(startip, endip) for k, v in enumerate(cidrs): iplist = v print iplist 运行后输出结果: 64.233.56.37/32 64.233.56.38/31 64.233.56.40/29 64.233.56.48/28 64.233.56.64/26 64.233.56.128/26 64.233.56.192/28 64.233.56.208/29
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11274.html
摘要:首先要准备一个环境,安装插件,本人用的是提取的轻量级环境,所以直接下载官网的源码,解压后找到文件夹复制到环境目录的文件夹里即可。使用方法首先引入确定起始和结尾,无论多复杂都可以转换运行后输出结果 概述 两种情况,一种给的是IP 范围,给了一个区间例如参考:http://www.cnblogs.com/amaoxi... 64.233.196.0-64.233.196.25#将这个范围内...
摘要:字加图文带你了解地址划分子网掩码的作用实际中地址规划是怎么样的子网在用同样的方法,,第三个子网网段用了,还三个可以继续使用,使用最小的,,计算出财务部门。 作者:一天 首发公众号:网络之路博客(ID:NetworkBlog)(1)子网掩码之所以出现大量地址浪费,在于早期的地址分类采用的是固定的网络位与主机位的长度,不能灵...
阅读 2130·2023-04-26 00:43
阅读 2655·2021-11-22 15:22
阅读 3771·2021-11-11 16:55
阅读 942·2021-11-04 16:06
阅读 1761·2019-08-30 14:12
阅读 971·2019-08-30 14:02
阅读 3338·2019-08-29 17:05
阅读 1377·2019-08-29 12:27