获取网络地址信息计算
子网划分
import ipaddress
# 定义IP地址和子网掩码
ip_network = ipaddress.IPv4Network('192.168.0.0/24')
# 划分子网
subnets = list(ip_network.subnets(new_prefix=26))
# 打印子网
for subnet in subnets:
print(subnet)划分后可用主机地址
import ipaddress
# 定义IP地址和子网掩码
ip_network = ipaddress.IPv4Network('192.168.0.0/24')
# 划分子网
subnets = list(ip_network.subnets(new_prefix=26))
# 打印每个子网的详细可用地址
for subnet in subnets:
print(f"子网: {subnet}")
print("可用地址:")
for host in subnet.hosts():
print(host)
print()根据地址信息获取网络地址
方式1:
import ipaddress
# 定义IP地址和子网掩码
ip_address = ipaddress.IPv4Address('192.168.0.10')
subnet_mask = ipaddress.IPv4Address('255.255.255.0')
# 获取网络地址
network_address = ipaddress.IPv4Network(f"{ip_address}/{subnet_mask}", strict=False)
# 打印网络地址
print(network_address.network_address)方式2:
import ipaddress # 定义IP地址和子网掩码 ip_cidr = '192.168.0.10/24' # 获取网络地址 network_address = ipaddress.IPv4Network(ip_cidr, strict=False) # 打印网络地址 print(network_address.network_address)
融合使用:通过IP网段信息测试已经使用的IP地址情况,PING只能作为参考
import ipaddress
import subprocess
# IP地址
ip_cidr = '172.30.1.62/27'
# 取掩码
prefix = ip_cidr.split("/")
# print(prefix[1])
# 获取网络地址
network_address = ipaddress.IPv4Network(ip_cidr, strict=False)
print("网络地址:" + str(network_address.network_address))
# 定义IP地址和子网掩码
ip_network = ipaddress.IPv4Network(network_address)
# 划分子网
subnets = list(ip_network.subnets(new_prefix=int(prefix[1])))
i = 0
x = 0
y = 0
# 打印每个子网的详细可用地址
for subnet in subnets:
# print("网络地址:" + str(subnet.network_address))
print("广播地址:" + str(subnet.broadcast_address))
print(f"子网: {subnet}")
print("可用地址:")
for host in subnet.hosts():
# print("主机地址:" + str(host))
# linux使用-c,windows使用—n
# 执行PING
result = subprocess.run(['ping', '-n', '1', str(host)], capture_output=True, text=True)
if result.returncode == 0:
print("主机地址:" + str(host) + " success")
x = x + 1
else:
print("主机地址:" + str(host) + " fail")
y = y + 1
i = i + 1
print("总主机地址数:" + str(i) + " 已经使用:" + str(x) + " 可用:" + str(y))