我的用例是:
- 确定虚拟机是否具有公共(public) IP(T/F)。
- (可选)打印公共(public) IP。
我一直在尝试提到的很多组合 here和 here 。我的主要目标是确定虚拟机是否具有关联的公共(public) IP。似乎 azure python sdk 随着时间的推移而发生了变化,一些旧的解决方案不起作用。
我找到了一个简单的 azure cli 命令来完成这项工作,但我无法找到它相应的 api。
az vm list-ip-addresses --name testVM
是否有 API 调用可以提供相同的信息。如果没有,识别 azure 虚拟机是否具有公共(public) IP 的最佳方法是什么。
最佳答案
我尝试在我的环境中重现相同的结果并得到以下结果:
我有一个名为 srivm
的 Azure VM,其公共(public) IP 如下:
为了通过 Python API 获取此信息,我使用客户端 key 创建了一个服务主体,如下所示:
我尝试使用以下代码获取虚拟机的公共(public)IP地址并成功获取:
from azure.identity import ClientSecretCredential
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient
credential = ClientSecretCredential(
tenant_id=<tenantID>, #Your TenantID
client_id=<appID>, #Your AppID
client_secret=<secret> #Your Client Secret Value
)
compute_client = ComputeManagementClient(
credential=credential,
subscription_id=<subscriptionID> #Your SubscriptionID
)
network_client = NetworkManagementClient(
credential=credential,
subscription_id=<subscriptionID> #Your SubscriptionID
)
rg = 'sri' #Resource group name
publicip = 'xxxxxxxxx' #Subnet name
result_get = network_client.public_ip_addresses.get(
rg, publicip
)
print(result_get.ip_address)
回应:
您可以尝试在您的环境中使用相同的代码来获取虚拟机的公共(public) IP。
在运行代码之前,请确保安装所需的模块并将所需的角色分配给服务主体。
关于python - 用于检查 VM 是否具有公共(public) IP 的 Azure Python API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74311879/