Учитывая IP-адрес, как мне найти, к какому экземпляру GCP Compute Engine он тоже принадлежит? - PullRequest
0 голосов
/ 28 ноября 2018

Я получил предупреждение о безопасности, например:

Security vulnerability found in server running at 123.45.67.89.

У меня много проектов Google Cloud Platform и много экземпляров, запущенных в каждом проекте.Как мне узнать, какому экземпляру Compute Engine принадлежит этот IP-адрес?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Используйте инструмент командной строки gcloud с фильтром.

gcloud compute instances list --filter="EXTERNAL_IP=123.45.67.89"

edit: пропущены требования многих проектов.Использование bash:

project_names=( "project1" "project2" "project3" )
for i in ${project_names[@]}; do gcloud compute instances list --filter="EXTERNAL_IP=123.45.67.89" --project=$i; done;
0 голосов
/ 28 ноября 2018

Этот скрипт PowerShell выполнит эту работу.Он использует gcloud .

<#
.SYNOPSIS
    Given an IP address, finds a GCP Compute instance with the ip address.
.EXAMPLE
    PS C:\> .\Get-GcpInstance.ps1 --IpAddress 1.2.3.4
.OUTPUTS
    The GCP instance information.
#>
Param(
    [string][Parameter(Mandatory=$true)] $IpAddress
)

function Get-GcpInstance {
    param (
        [string][Parameter(Mandatory=$true)] $IpAddress,
        [string[]][Parameter(Mandatory=$true)] $ProjectIds
    )
    foreach ($projectId in $projectIds) {
        $instances = gcloud compute instances list -q --project=$projectId --format=json | ConvertFrom-Json
        foreach ($instance in $instances) {
            foreach ($networkInterface in $instance.networkInterfaces) {
                if ($networkInterface.networkIp -eq $IpAddress) {
                    return $instance                    
                }
                foreach ($accessConfig in $networkInterface.accessConfigs) {
                    if ($accessConfig.natIP -eq $IpAddress) {
                        return $instance
                    }
                }
            }
        }
    }
}

Get-GcpInstance $IpAddress (gcloud projects list --format=json | ConvertFrom-Json).ProjectId

Я разместил здесь немного более сложную версию скрипта: https://github.com/SurferJeffAtGoogle/scratch/blob/master/FindIp/Get-GcpInstance.ps1 Он более сложный, потому что он рассматривает только проекты, которыми я владею, ион отображает индикатор выполнения.

PS Powershell работает на Linux и Mac тоже!Я написал этот код в Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...