You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure SDK Python检查子网是否存在可用IP?

检查Azure子网可用IP的方法(Python SDK + REST API)

使用Azure SDK for Python实现

你可以通过azure-mgmt-network SDK直接获取子网的可用IP计数,无需手动计算CIDR范围。

步骤1:安装依赖

首先安装所需的Python包:

pip install azure-mgmt-network azure-identity

步骤2:代码示例

from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient

# 替换为你的实际资源参数
SUBSCRIPTION_ID = "your-subscription-id"
RESOURCE_GROUP_NAME = "your-resource-group-name"
VNET_NAME = "your-vnet-name"
SUBNET_NAME = "your-subnet-name"

# 初始化网络管理客户端
credential = DefaultAzureCredential()
network_client = NetworkManagementClient(credential, SUBSCRIPTION_ID)

# 获取子网详情
subnet = network_client.subnets.get(RESOURCE_GROUP_NAME, VNET_NAME, SUBNET_NAME)

# 提取可用IP数量
available_ip_count = subnet.available_ip_address_count
print(f"子网 {SUBNET_NAME} 剩余可用IP: {available_ip_count}")

# 根据需求判断是否可部署VM
if available_ip_count > 0:
    print("子网有可用IP,可继续部署VM")
else:
    print("子网无可用IP,无法部署VM")

available_ip_address_count是Azure预计算的属性,直接返回子网当前剩余的可用私有IP地址数量,已自动排除网关、DNS等预留占用的IP。


使用Azure REST API实现

如果无法使用Python SDK,可直接调用Azure资源管理器的子网查询API获取可用IP计数。

API端点说明

调用Get Subnet接口,端点格式:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}?api-version=2023-09-01

示例1:使用curl调用

先通过Azure CLI获取访问令牌,再发送请求:

# 替换为你的资源参数
SUBSCRIPTION_ID="your-subscription-id"
RG_NAME="your-resource-group-name"
VNET_NAME="your-vnet-name"
SUBNET_NAME="your-subnet-name"

# 获取临时访问令牌
TOKEN=$(az account get-access-token --query accessToken -o tsv)

# 发送GET请求
curl -X GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME?api-version=2023-09-01" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"

响应JSON中,properties.availableIpAddressesCount字段即为可用IP数量。

示例2:使用Python requests库调用

import requests
from azure.identity import DefaultAzureCredential

# 替换为你的资源参数
SUBSCRIPTION_ID = "your-subscription-id"
RESOURCE_GROUP_NAME = "your-resource-group-name"
VNET_NAME = "your-vnet-name"
SUBNET_NAME = "your-subnet-name"
API_VERSION = "2023-09-01"

# 获取Azure AD访问令牌
credential = DefaultAzureCredential()
token = credential.get_token("https://management.azure.com/.default").token

# 构建请求URL
url = f"https://management.azure.com/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP_NAME}/providers/Microsoft.Network/virtualNetworks/{VNET_NAME}/subnets/{SUBNET_NAME}?api-version={API_VERSION}"

# 发送请求并解析响应
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
response = requests.get(url, headers=headers)
response.raise_for_status()  # 捕获请求错误

subnet_info = response.json()
available_ip_count = subnet_info["properties"]["availableIpAddressesCount"]
print(f"子网 {SUBNET_NAME} 剩余可用IP: {available_ip_count}")

内容的提问来源于stack exchange,提问作者Davide Casillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:20:31