2024-05-16 03:12:47 发布
网友
使用标准的python包,如果我们将任何IPv6网络地址作为输入,如何获得接下来的几个IPv6网络地址。基本上,我想迭代给定的网络地址,在每次迭代中它应该递增并得到下一个网络
例如,如果我的起始网络地址是4001:1::/32,那么在每次迭代中,我都希望得到下一个网络地址:4001:2::/32,4001:3::/32,4001:4::/32,依此类推。在
注意:这是我之前关于fetching IPv4 networks的问题。在
库ipcalc有一些例程可以使计算ip地址相当容易。但是如果最好不要安装ipcalc,一个继承自ipaddress.ipv6网络可以建造。在
import ipaddress class BetterIPv6Network(ipaddress.IPv6Network): def __add__(self, offset): """Add numeric offset to the IP.""" new_base_addr = int(self.network_address) + offset return self.__class__((new_base_addr, self.prefixlen)) def size(self): """Return network size.""" return 1 << (self.max_prefixlen - self.prefixlen)
4001:1::/32 4001:2::/32 4001:3::/32
python3.4不接受元组初始化ipaddress.ipv6网络. 这个代码可以解决这个问题。在
import ipaddress class BetterIPv6Network(ipaddress.IPv6Network): def __add__(self, offset): """Add numeric offset to the IP.""" new_base_addr = int(self.network_address) + offset new_base_addr_str = str(self.__class__(new_base_addr)).split('/')[0] return self.__class__( new_base_addr_str + '/' + str(self).split('/')[1]) def size(self): """Return network size.""" return 1 << (self.max_prefixlen - self.prefixlen)
库ipcalc有一些例程可以使计算ip地址相当容易。但是如果最好不要安装ipcalc,一个继承自ipaddress.ipv6网络可以建造。在
代码
测试代码:
^{pr2}$结果:
Python 3.4:
python3.4不接受元组初始化ipaddress.ipv6网络. 这个代码可以解决这个问题。在
相关问题 更多 >
编程相关推荐