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')