【发布时间】:2019-11-09 19:53:50
【问题描述】:
给定主机的 IP 地址及其 CIDR(例如,分别为 143.204.181.28 和 143.204.176.0/21),是否可以获取主机所属的子网 ID 和属于的 IP 地址范围同一个子网?如果可能的话,如果有人提供一个 python 代码来演示如何实现这一点,我将不胜感激。
【问题讨论】:
标签: python-3.x networking ip lan
给定主机的 IP 地址及其 CIDR(例如,分别为 143.204.181.28 和 143.204.176.0/21),是否可以获取主机所属的子网 ID 和属于的 IP 地址范围同一个子网?如果可能的话,如果有人提供一个 python 代码来演示如何实现这一点,我将不胜感激。
【问题讨论】:
标签: python-3.x networking ip lan
您可以使用内置模块ipaddress (doc):
import ipaddress
addr = ipaddress.ip_address('143.204.181.28')
net = ipaddress.ip_network('143.204.176.0/21')
for s in net.subnets():
if addr in s:
print('subnet:', s)
ips = [*s]
print('Subnet contains {} IPs'.format(len(ips)))
打印:
subnet: 143.204.180.0/22
Subnet contains 1024 IPs
IP 位于变量ips。
【讨论】: