Python как получить /8 подсети для IP-адресов

Как я могу получить подсеть /8, содержащую данный IP-адрес. например, подсеть 10.0.0.0/8 для ip 10.1.1.1

Я попробовал это так для остроумия lib netaddr, но он не делает то, что должен

network = netaddr.IPNetwork(ip)
network.prefixlen=8
ip_subnet=network.cidr

IP-адрес является IP-адресом

2 ответа

Используя ipaddr, сначала установите модуль

pip install ipaddr

затем импортируйте IPv4Network из него

from ipaddr import IPv4Network

masknet = IPv4Network('192.168.1.1') # Ip Address
print masknet.netmask
# OR
masknet = IPv4Network('192.168.1.1/8')
print masknet.netmask

Результат:

>>> print masknet.netmask
255.255.255.255
>>> print masknet.netmask
255.0.0.0

Вы можете использовать ip.network после создания IPNetwork()

ip = IPNetwork('10.1.1.1/8')
ip.network
Out[48]: IPAddress('10.0.0.0')
ip = IPNetwork('10.1.1.1/16')
ip.network
Out[50]: IPAddress('10.1.0.0')
ip = IPNetwork('10.1.1.1/24')
ip.network
Out[52]: IPAddress('10.1.1.0')
Другие вопросы по тегам