En este artículo, utilizaremos un script de PowerShell (.ps1) para crear un diagrama que mapea la dirección pública de los agentes. Esto te ayudará a realizar un seguimiento de las diversas redes de las que forman parte los agentes de un cliente para una gestión más sencilla.
Notas: Necesitarás instalar los módulos PSAtera y PSWriteHTML en Powershell antes de usar este script.
1. Copia el siguiente script.
Import-Module PSAtera
Import-Module PSWriteHTML
function Map-Agents($CustomerID) {
# Obtener todos los agentes de Atera para el cliente
$Agents = Get-AteraAgents -CustomerID $CustomerID
New-Html -TitleText "Mapa de Agentes de Atera" -Online -FilePath $PSScriptRoot\Atera-Agents.html {
New-HTMLTabStyle -SlimTabs
New-HTMLTab -Name "Agentes de Atera" {
New-HTMLSection -HeaderText "Redes de Atera" {
New-HTMLPanel {
New-HTMLDiagram -Height 'calc(85vh)' {
New-DiagramOptionsPhysics -RepulsionNodeDistance 150 -Solver repulsion
# Generar Nivel 1: Red pública
$Agents | Select-Object ReportedFromIP -Unique | ForEach-Object {
New-DiagramNode -Label $_.ReportedFromIP -Level 1 -ColorBackground Red
}
$PrivateNetworks = @()
foreach($Agent in $Agents) {
# Ignorar cualquier dirección IP autoasignada
$Agent.IPAddresses | Where-Object { !($_.StartsWith("169.254.")) } | ForEach-Object {
$Address = [IPAddress]$_
$AddressBytes = $Address.GetAddressBytes()
$Network = ""
# Obtener de manera simple el ID de la red basado en la clase de dirección IP
if ($AddressBytes[0] -eq 10) { # Clase A
$Network = "10.0.0.0/8"
} elseif ($AddressBytes[0] -eq 172 -and $AddressBytes[1] -ge 16 -and $AddressBytes[1] -le 31) { # Clase 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"
}
# Crear el nodo del diagrama para el ID de la red bajo la dirección IP pública
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
}
# Crear el nodo del diagrama para el agente bajo su ID de red correspondiente
New-DiagramNode -Label "$($Agent.MachineName)`t$($Address.IPAddressToString)" -Level 3 -To "$Network,$($Agent.ReportedFromIP)" -ArrowsToEnabled
}
}
}
}
}
}
} -ShowHTML
}
2. Guarda el script como Map-Agents.ps1 y luego ejecuta lo siguiente reemplazando el ID del cliente con el que deseas usar:
3. El siguiente diagrama se generará y se abrirá en tu navegador predeterminado.
- Nodos rojos: Direcciones públicas
- Nodos verdes: IDs de red
- Nodos azules: Los agentes
Puedes agregar el script en Atera y ejecutarlo a través de un perfil de Automatización de TI.
NOTA: El script no fue revisado para verificar su funcionalidad y no ofrecemos soporte para la resolución de problemas. Por favor, revísalo y pruébalo primero en tu entorno de laboratorio.
¡Gracias, Dave Long, por crear este script y por tu contribución a la comunidad de Atera!