Этот скрипт 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.