如何使用 python oci 获取所有附加到计算的 ip

How to get all ip attached to compute using python oci

我想使用 python oci 包来获取有关环境的信息。 如何列出连接到计算节点的所有 IP 地址(public 或私有地址)? 不幸的是,list_instances() 没有提供这部分计算细节。 谢谢。

正如上面@Char 分享的那样,oci-python-sdk example 应该能帮到你。

您可以在此处找到 Python SDK 支持的所有服务的列表 - https://docs.cloud.oracle.com/en-us/iaas/Content/API/SDKDocs/pythonsdk.htm

此外,OCI Python SDK 的完整文档可在此处找到 - https://docs.cloud.oracle.com/en-us/iaas/tools/python/2.21.5/

请使用此代码。基本上,您必须查找 VNIC 附件对象并根据 InstanceId 过滤 VNIC_ID。 VNIC_ID可用于后续查找IP地址。

我用data[0]表示第一个附件。您可以使用循环遍历所有附件并打印 IP。

    compute_client = oci.core.ComputeClient(config={}, signer=signer)
    network_client = oci.core.VirtualNetworkClient(
        config={}, signer=signer)
    vnic_id = compute_client.list_vnic_attachments(
        cd_compartment_id, instance_id=instanceId).data[0].vnic_id
    private_ip = network_client.get_vnic(vnic_id).data.private_ip

假设您在创建 API 密钥时下载了 OCI compute instance and you need its private and public IP addresses, provided that you already created an API key in your profile and that you configured your ~/.oci/config 显示名称 和有效的 pem 私钥,以下 Python 代码可以提供帮助:

import oci

display_name = "your display name"

config = oci.config.from_file()
identity = oci.identity.IdentityClient(config)
user = identity.get_user(config["user"]).data
instances = oci.core.ComputeClient(config).list_instances(
    compartment_id=user.compartment_id).data
instance_id = {i.display_name: i.id for i in instances}[display_name]
compute_client = oci.core.ComputeClient(config)
vnic_data = compute_client.list_vnic_attachments(
    compartment_id=user.compartment_id, instance_id=instance_id).data
network_client = oci.core.VirtualNetworkClient(config)
vnic_list = [network_client.get_vnic(vnic_attachment.vnic_id).data
    for vnic_attachment in vnic_data]
public_ip = {i.display_name: i.public_ip for i in vnic_list}[display_name]
private_ip = {i.display_name: i.private_ip for i in vnic_list}[display_name]
print(public_ip, private_ip)

这意味着:

pip3 install oci oci-cli