Просмотр полной версии : Или связать две тулзы, или есть готовое решение?
Slassika
15.08.2025, 18:06
Всем привет!
Для проверки на предмет открытых портов есть TCP Port Scanner - прекрасная программа, а для проверки, что доступно подключение RDP пользуюсь RDPSS.
И хочу организовать, чтобы сразу проводилась проверка на предмет доступности удаленного рабочего стола по этому адресу. Чтобы не копировать и вставлять из одной в другую программу список.
Как это можно сделать?
Заскриптуй. На входе ипняки.
Код:
$IPFilePath = "C:\tools\ips.txt"
$OutputFile = "C:\tools\rdp_available.txt"
$Port = 3389
$Timeout = 3000
if (Test-Path $OutputFile) { Remove-Item $OutputFile }
if (-not (Test-Path $IPFilePath)) {
Write-Host "Файл $IPFilePath не найден!" -ForegroundColor Red
Read-Host "Нажмите Enter для выхода..."
exit
}
$IPList = Get-Content $IPFilePath | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne "" -and $_ -notmatch "^#" }
if ($IPList.Count -eq 0) {
Write-Host "Список IP пуст или не прочитан." -ForegroundColor Yellow
Read-Host "Нажмите Enter для выхода..."
exit
}
Write-Host "Проверка доступности RDP (порт $Port) для $($IPList.Count) хостов...`n" -ForegroundColor Cyan
$AvailableIPs = @()
foreach ($IP in $IPList) {
$client = New-Object System.Net.Sockets.TcpClient
$connect = $client.BeginConnect($IP, $Port, $null, $null)
$wait = $connect.AsyncWaitHandle.WaitOne($Timeout, $false)
if (!$wait) {
Write-Host "$IP`: ❌ Недоступен (таймаут)" -ForegroundColor Red
$client.Close()
continue
}
try {
$client.EndConnect($connect)
Write-Host "$IP`: ✅ Доступен по RDP" -ForegroundColor Green
$AvailableIPs += $IP
} catch {
Write-Host "$IP`: ❌ Недоступен (ошибка подключения)" -ForegroundColor Red
}
$client.Close()
}
if ($AvailableIPs.Count -gt 0) {
$AvailableIPs | Out-File -Encoding UTF8 -FilePath $OutputFile
Write-Host "`n✅ Доступные RDP-хосты сохранены в: $OutputFile" -ForegroundColor Green
$runRDPSS = Read-Host "Запустить RDPSS для доступных хостов? (y/n)"
if ($runRDPSS -match "^[yY]") {
foreach ($ip in $AvailableIPs) {
Write-Host "Запуск RDPSS для $ip"
Start-Process "rdpss.exe" -ArgumentList $ip -WorkingDirectory "C:\Путь\к\RDPSS\"
Start-Sleep -Milliseconds 500
}
}
} else {
Write-Host "`n❌ Ни один хост не доступен по RDP." -ForegroundColor Red
}
Write-Host "`nГотово. Нажмите Enter для выхода..." -ForegroundColor Cyan
Read-Host
Slassika
17.08.2025, 02:29
Здравствуйте! Интересно, сейчас буду смотреть и гуглить. Очень надеюсь, что осилю.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot