
Я создал калькулятор подсетей на Python 3‚ который принимает IP адрес и маску в формате CIDR в качестве аргументов командной строки. Калькулятор выводит следующую информацию⁚ адрес подсети‚ маску подсети‚ IP адреса первого и последнего хостов‚ широковещательный адрес и класс подсети.Вот пример кода для калькулятора подсетей⁚
python
import sys
def calculate_subnet(ip‚ cidr_mask)⁚
ip_octets ip.split(‘.’)
binary_ip ».join([bin(int(octet))[2⁚].zfill(8) for octet in ip_octets])
network_address binary_ip[⁚cidr_mask] ‘0’ * (32 ⸺ cidr_mask)
broadcast_address binary_ip[⁚cidr_mask] ‘1’ * (32 ー cidr_mask)
subnet_mask ‘1’ * cidr_mask ‘0’ * (32 ⸺ cidr_mask)
subnet_mask_octets [str(int(subnet_mask[i⁚i 8]‚ 2)) for i in range(0‚ 32‚ 8)]
network_address_octets [str(int(network_address[i⁚i 8]‚ 2)) for i in range(0‚ 32‚ 8)]
broadcast_address_octets [str(int(broadcast_address[i⁚i 8]‚ 2)) for i in range(0‚ 32‚ 8)]
start_ip network_address_octets[⁚3] [str(int(network_address_octets[3]) 1)]
end_ip broadcast_address_octets[⁚3] [str(int(broadcast_address_octets[3]) ⸺ 1)]
subnet_class determine_subnet_class(int(ip_octets[0]))
return ‘.’.join(network_address_octets)‚ ‘.’.join(subnet_mask_octets)‚ ‘.’.join(start_ip)‚ ‘.’.join(end_ip)‚ ‘.’.join(broadcast_address_octets)‚ subnet_class
def determine_subnet_class(first_octet)⁚
if first_octet < 127⁚
return 'A'
elif first_octet < 191⁚
return 'B'
elif first_octet < 223⁚
return 'C'
elif first_octet < 239⁚
return 'D'
else⁚
return ‘E’
if __name__ ″__main__″⁚
ip sys.argv[1]
cidr_mask int(sys.argv[2])
network_address‚ subnet_mask‚ start_ip‚ end_ip‚ broadcast_address‚ subnet_class calculate_subnet(ip‚ cidr_mask)
print(″Адрес подсети⁚ {}″.format(network_address))
print(″Маска подсети⁚ {}″.format(subnet_mask))
print(″IP адрес первого хоста⁚ {}″.format(start_ip))
print(″IP адрес последнего хоста⁚ {}″.format(end_ip))
print(″Широковещательный адрес⁚ {}″.format(broadcast_address))
print(″Класс подсети⁚ {}″.format(subnet_class))
Вы можете запустить этот код‚ передав IP адрес и маску в формате CIDR в качестве аргументов командной строки‚ например⁚
python subnet_calculator.py 192.168.0.0 24
Этот пример выведет информацию о подсети 192.168.0.0/24:
Адрес подсети⁚ 192.168.0.0
Маска подсети⁚ 255.255.255.0
IP адрес первого хоста⁚ 192.168.0.1
IP адрес последнего хоста⁚ 192.168.0.254
Широковещательный адрес⁚ 192.168.0.255
Класс подсети⁚ C
Этот калькулятор подсетей на Python 3 поможет вам быстро и удобно получать информацию о подсетях на основе заданного IP адреса и маски в формате CIDR.