gpt4 book ai didi

python - 将 IP 列表与另一个 IP 列表或 IP 范围进行比较

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:39 25 4
gpt4 key购买 nike

我创建了一个 python 项目,用于扫描 IP 范围(即 x.y.z.0/24)并返回在线主机列表。它将在线主机列表保存到仅包含 IP 的文件中(即 ['192.168.0.1'、'192.168.0.2'、'192.168.0.8'、...]。我在下一步中遇到了麻烦。我'我想将此在线主机列表与 IP 范围进行比较,以验证这些计算机是否是消除其他设备的计算机。我有一个可供我使用的计算机的 DHCP 保留列表。是否有一种简单的方法可以执行此操作并更新 onHosts 列表?

最佳答案

这是您可以尝试的建议解决方案(它有点臃肿,但我希望稍后会对其进行编辑)

def get_range(str_num):
""" Converts string representation of number or range into (min,max) tuple """
try:
num = int(str_num)
return num, num
except ValueError:
min_, max_ = str_num.split('-')
return int(min_), int(max_)

def host_in_range(host, host_range):
""" Checks whether given host belongs to given range (both are range representation """
#print(*zip(host, host_range))
for (min_h, max_h), (min_r, max_r) in zip(host, host_range):
if (min_h < min_r) or (max_h > max_r): return False
return True


if __name__ == "__main__":

hosts_str = ['192.168.0.1', '192.168.0.10', '0.168.0.0', '192.168.1.10', '192.168.0.255']
hosts = [x.split('.') for x in hosts_str]
hosts = [[get_range(x) for x in elem] for elem in hosts]

host_ranges_str = ['0-255.168.0.0-254', '192.168.2-5.0-255']
host_ranges = [x.split('.') for x in host_ranges_str]
host_ranges = [[get_range(x) for x in elem] for elem in host_ranges]

for x in range(5):
print(hosts_str[x], "in range", host_ranges_str[0], host_in_range(hosts[x], host_ranges[0]))

关于python - 将 IP 列表与另一个 IP 列表或 IP 范围进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40185170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com