Files
CyberbackupAPI/agents_ip.ps1
2026-09-03 03:08:02 +00:00

80 lines
3.1 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$BASE_URL = "https://nameserver:9877"
# Отключаем проверку SSL-сертификатов
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate cert, WebRequest req, int certProblem) { return true; }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
# Запрос логина и пароля
$username = Read-Host "Введите имя пользователя"
$password = Read-Host "Введите пароль" -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$plainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
if (-not $username -or -not $plainPassword) {
Write-Host "Не введён User или Password" -ForegroundColor Red
exit 1
}
# Аутентификация
$authUrl = "$BASE_URL/idp/token"
$body = "username=$([uri]::EscapeDataString($username))&password=$([uri]::EscapeDataString($plainPassword))&grant_type=password"
try {
$authResponse = Invoke-RestMethod -Uri $authUrl -Method Post -Body $body -ContentType "application/x-www-form-urlencoded"
} catch {
Write-Host "Ошибка аутентификации: $_" -ForegroundColor Red
exit 1
}
if (-not $authResponse.token_type -or -not $authResponse.access_token) {
Write-Host "Ошибка: в ответе отсутствует токен" -ForegroundColor Red
exit 1
}
$headers = @{
"Content-Type" = "application/json"
"Authorization" = "$($authResponse.token_type) $($authResponse.access_token)"
}
# Получение списка агентов
try {
Write-Host "Сбор информации об агентах..."
$agentsUrl = "$BASE_URL/api/resource_manager/v1/agents"
$response = Invoke-RestMethod -Uri $agentsUrl -Method Get -Headers $headers
} catch {
if ($_.Exception.Response.StatusCode.value__ -eq 401) {
Write-Host "Ошибка 401: токен недействителен или истёк." -ForegroundColor Red
} else {
Write-Host "Ошибка: $_" -ForegroundColor Red
}
exit 1
}
$agents = $response.items | Where-Object { $_.type -eq "agent" } | ForEach-Object {
[PSCustomObject]@{
Name = $_.name
Type = $_.type
Online = $_.communication.online
OS = $_.details.os.name
IP = ($_.details.ipAddresses -join ", ")
}
}
Write-Host ""
Write-Host "Всего найдено агентов/устройств: $($agents.Count)" -ForegroundColor Green
Write-Host ""
$agents | Format-Table -Property @(
@{Label="Имя устройства"; Expression={$_.Name}; Width=40}
@{Label="Тип"; Expression={$_.Type}; Width=15}
@{Label="Статус"; Expression={if($_.Online){"Онлайн"}else{"Офлайн"}}; Width=8}
@{Label="ОС"; Expression={$_.OS}; Width=30}
@{Label="IP-адреса"; Expression={$_.IP}}
) -AutoSize