如何通过Python SDK判断Azure公网IP是否已关联资源
获取Azure孤立公网IP地址(未关联资源)的Python SDK实现
要判断Azure公网IP是否已关联资源,核心是检查公网IP对象的ip_configuration属性:
- 当公网IP关联了VM网卡、负载均衡等资源时,
ip_configuration会包含关联资源的ID及相关配置信息; - 若未关联任何资源,该属性为
None,这类IP就是你要找的“孤立公网IP”。
基于你提供的SDK初始化代码,扩展实现筛选逻辑如下:
from azure.mgmt.network import NetworkManagementClient from azure.identity import DefaultAzureCredential SUBSCRIPTION_ID = "你的订阅ID" # 初始化网络管理客户端 credential = DefaultAzureCredential() network_client = NetworkManagementClient(credential, SUBSCRIPTION_ID) # 获取订阅下所有公网IP public_ip_list = network_client.public_ip_addresses.list_all() # 筛选未关联资源的孤立公网IP isolated_public_ips = [] for public_ip in public_ip_list: # 通过ip_configuration是否为空判断关联状态 if not public_ip.ip_configuration: isolated_public_ips.append({ "名称": public_ip.name, "公网IP地址": public_ip.ip_address, "资源组": public_ip.id.split("/")[4], "区域": public_ip.location }) # 打印结果 print("孤立公网IP列表:") for ip_info in isolated_public_ips: print(f"名称: {ip_info['名称']}, IP: {ip_info['公网IP地址']}, 资源组: {ip_info['资源组']}, 区域: {ip_info['区域']}")
补充说明
- 认证方式可根据实际场景替换:比如使用Service Principal认证时,需用
ClientSecretCredential并传入租户ID、客户端ID、客户端密钥; public_ip.id的格式为/subscriptions/{订阅ID}/resourceGroups/{资源组名称}/providers/Microsoft.Network/publicIPAddresses/{IP名称},因此用split("/")[4]可以直接提取资源组名称;- 若需要更详细的关联信息(比如关联的具体资源类型),可在
ip_configuration不为空时,解析其id字段进一步获取。
内容的提问来源于stack exchange,提问作者Manjunath Rao
相关产品推荐
相关产品推荐

