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!