In questo articolo, utilizzeremo uno script PowerShell (.ps1) per creare un diagramma che mappa l'indirizzo pubblico degli agenti. Questo ti aiuterà a tenere traccia delle varie reti di cui fanno parte gli agenti di un cliente per una gestione più semplice.
Note: È necessario installare i moduli PSAtera e PSWriteHTML in Powershell prima di utilizzare questo script.
1. Copia lo script qui sotto.
Import-Module PSAtera
Import-Module PSWriteHTML
function Map-Agents($CustomerID) {
# Ottieni tutti gli agenti Atera per il cliente
$Agents = Get-AteraAgents -CustomerID $CustomerID
New-Html -TitleText "Mappa Agenti Atera" -Online -FilePath $PSScriptRoot\Atera-Agents.html {
New-HTMLTabStyle -SlimTabs
New-HTMLTab -Name "Agenti Atera" {
New-HTMLSection -HeaderText "Reti Atera" {
New-HTMLPanel {
New-HTMLDiagram -Height 'calc(85vh)' {
New-DiagramOptionsPhysics -RepulsionNodeDistance 150 -Solver repulsion
# Genera Livello 1: Rete pubblica
$Agents | Select-Object ReportedFromIP -Unique | ForEach-Object {
New-DiagramNode -Label $_.ReportedFromIP -Level 1 -ColorBackground Red
}
$PrivateNetworks = @()
foreach($Agent in $Agents) {
# Ignora qualsiasi indirizzo IP auto-assegnato
$Agent.IPAddresses | Where-Object { !($_.StartsWith("169.254.")) } | ForEach-Object {
$Address = [IPAddress]$_
$AddressBytes = $Address.GetAddressBytes()
$Network = ""
# Ottieni stupidamente l'ID di rete basato sulla classe dell'indirizzo IP
if ($AddressBytes[0] -eq 10) { # Classe A
$Network = "10.0.0.0/8"
} elseif ($AddressBytes[0] -eq 172 -and $AddressBytes[1] -ge 16 -and $AddressBytes[1] -le 31) { # Classe B
$Network = "172.16.$($AddressBytes[2]).0/16"
} elseif ($AddressBytes[0] -eq 192 -and $AddressBytes[1] -eq 168) {
$Network = "192.168.$($AddressBytes[2]).0/24"
}
# Crea il nodo del diagramma per l'ID di rete sotto l'indirizzo IP pubblico
if ($PrivateNetworks -notcontains "$Network,$($Agent.ReportedFromIP)") {
$PrivateNetworks += "$Network,$($Agent.ReportedFromIP)"
New-DiagramNode -Label $Network -Id "$Network,$($Agent.ReportedFromIP)" -To $Agent.ReportedFromIP -Level 2 -ArrowsToEnabled -ColorBackground Green
}
# Crea il nodo del diagramma per l'agente sotto il suo ID di rete corrente
New-DiagramNode -Label "$($Agent.MachineName)`t$($Address.IPAddressToString)" -Level 3 -To "$Network,$($Agent.ReportedFromIP)" -ArrowsToEnabled
}
}
}
}
}
}
} -ShowHTML
}
2. Salva lo script come Map-Agents.ps1 e poi esegui il seguente comando sostituendo l'ID cliente con quello che desideri utilizzare:
3. Il seguente diagramma verrà generato e si aprirà nel tuo browser predefinito.
- Nodi rossi: Indirizzi pubblici
- Nodi verdi: ID di rete
- Nodi blu: Gli agenti
Puoi aggiungere lo Script in Atera e eseguirlo tramite un profilo di Automazione IT.
NOTA: Lo script non è stato verificato per la funzionalità e non offriamo supporto per la risoluzione dei problemi. Si prega di esaminarlo e testarlo prima nel proprio ambiente di laboratorio.
Grazie, Dave Long, per aver creato questo script e per il tuo contributo alla comunità di Atera!