powershell ver.

This commit is contained in:
smolkik_adm
2026-09-03 03:08:02 +00:00
parent 602c7e5a78
commit dbe09db841

80
agents_ip.ps1 Normal file
View File

@@ -0,0 +1,80 @@
$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