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

如何通过OCI CLI查询租户下所有计算实例的公网IP地址

OCI租户全量计算实例公网IP批量查询Bash脚本实现

前置说明

OCI控制台Cloud Shell已预装OCI CLI工具且默认完成身份授权,无需额外配置密钥即可直接访问租户内有权限的所有资源,脚本运行时会自动遍历所有已订阅区域的计算实例。

完整可运行脚本

#!/bin/bash
# 输出CSV格式表头
echo "实例名称,所属区域,实例OCID,公网IP"
# 获取租户所有已订阅的区域列表
regions=$(oci iam region-subscription list --query "data[].region-name" --output raw)

for region in $regions; do
  # 查询当前区域下所有计算实例的基础信息
  instances=$(oci compute instance list --region "$region" --all --query "data[].{name: \"display-name\", id: id}" --output json)
  
  # 逐实例解析信息并查询公网IP
  echo "$instances" | jq -c '.[]' | while read -r instance; do
    instance_name=$(echo "$instance" | jq -r '.name')
    instance_id=$(echo "$instance" | jq -r '.id')
    
    # 获取实例绑定的主VNIC ID
    vnic_id=$(oci compute vnic-attachment list \
      --region "$region" \
      --instance-id "$instance_id" \
      --query "data[?is-primary==\`true\`].vnic-id" \
      --output raw
    )
    
    # 查询VNIC对应的公网IP地址
    public_ip=$(oci network vnic get \
      --region "$region" \
      --vnic-id "$vnic_id" \
      --query "data.\"public-ip\"" \
      --output raw
    )
    
    # 处理未绑定公网IP的场景
    if [ -z "$public_ip" ] || [ "$public_ip" = "None" ]; then
      public_ip="无公网IP"
    fi
    
    # 输出单条实例记录
    echo "${instance_name},${region},${instance_id},${public_ip}"
  done
done

使用方法

  • 打开OCI控制台右上角的Cloud Shell终端,等待环境初始化完成
  • 将上述脚本内容粘贴到Cloud Shell中,保存为脚本文件:nano get_oci_public_ips.sh,粘贴后按Ctrl+O回车保存,Ctrl+X退出编辑器
  • 为脚本添加执行权限:chmod +x get_oci_public_ips.sh
  • 直接运行脚本即可输出结果,也可导出为CSV文件方便后续处理:./get_oci_public_ips.sh > 租户实例公网IP列表.csv

注意事项

  • 若租户下实例数量较多,脚本运行时间可能较长,请等待执行完成即可
  • 脚本默认仅查询实例主网卡的公网IP,若需要查询辅助网卡的公网IP,可删除vnic-attachment list命令中的--query参数里的[?is-primary==\true`]`过滤条件
  • 若仅需要查询指定区域的实例,可将遍历区域的代码替换为指定的区域ID即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:06:07