修改这部分代码: def check_ip_in_range(vtep_ip, subnets): ret = [] for key, host in vtep_ip.items(): if host.get('vswitch_type', '') in ['dvs', 'ovs'] and \ host.get('segmentation_type', '') == 'vxlan': ip = host.get('vtep_ip', '') for cidr, info in subnets.items(): ip_network = ipaddress.ip_network(cidr) if ipaddress.ip_address(ip) in ip_network: ip_start = ipaddress.ip_address(info['start']) ip_end = ipaddress.ip_address(info['end']) if ip_start and ip_end: if ip_start <= ipaddress.ip_address(ip) <= ip_end: ret.append("%s: true" % key) else: ret.append("%s: false" % key) else: ret.append("%s: true" % key) else: ret.append("%s: false" % key) return ret,使得一个ip检查总共只返回一个结果true或者false
时间: 2024-02-14 07:18:18 浏览: 22
可以修改代码如下:
```
def check_ip_in_range(vtep_ip, subnets):
for key, host in vtep_ip.items():
if host.get('vswitch_type', '') in ['dvs', 'ovs'] and \
host.get('segmentation_type', '') == 'vxlan':
ip = host.get('vtep_ip', '')
for cidr, info in subnets.items():
ip_network = ipaddress.ip_network(cidr)
if ipaddress.ip_address(ip) in ip_network:
ip_start = ipaddress.ip_address(info['start'])
ip_end = ipaddress.ip_address(info['end'])
if ip_start and ip_end:
if ip_start <= ipaddress.ip_address(ip) <= ip_end:
return "%s: true" % key
else:
return "%s: false" % key
else:
return "%s: true" % key
else:
return "%s: false" % key
return "false" # 如果没有匹配到,则返回 false
```
这样每次只匹配到一个结果时就会立即返回 true 或者 false,如果没有匹配到,则返回 false。