Python как получить / 8 подсети для IP-адресов - PullRequest
0 голосов
/ 07 мая 2018

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

Я пытался сделать это с умом netaddr lib, но он не делает то, что должен

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

ip - это IP-адрес

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы можете использовать 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')
0 голосов
/ 07 мая 2018

с помощью 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
...