Python
from ipaddress import *
# Создание сети
net = ip_network('1.2.3.4/255.255.255.192', 0)
net = ip_network('1.2.3.4/26', 0) # или с префиксом
print(net) # сеть / кол-во единиц
print(net[0]) # адрес сети
print(net[-1]) # широковещательный
print(net.netmask) # маска
print(net.num_addresses) # всего адресов
print(net.num_addresses - 2) # узлов
# Все IP сети:
for ip in net:
b = f'{int(ip):032b}' # в двоичном Способ 2
from ipaddress import *
# Тип 1: Определить адрес сети
net = ip_network('IP/Маска', 0)
print(net)
# Тип 2: Макс кол-во нулей в маске
maxi = 0
for mask in range(32 + 1):
net = ip_network(f'IP/{mask}', 0)
if str(net) == f'Адрес_сети/{mask}':
maxi = max(maxi, mask)
print(maxi)
# Тип 3: Кол-во IP с условием
net = ip_network('IP/Маска', 0)
cnt = 0
for ip in net:
b = f'{ip:b}'
# if условие: cnt += 1
# Тип 5: Два узла в одной сети
for mask in range(32 + 1):
net1 = ip_network(f'IP1/{mask}', 0)
net2 = ip_network(f'IP2/{mask}', 0)
if net1 == net2:
print(net1.netmask) 📚 Теория
IP-адреса и маски подсетей. Адресация в IPv4.