Проверка открытых портов rdp из скрипта
Мне нужно выяснить, какие серверные порты прослушивают порт 3389. Я должен проверить 2500 серверов, некоторые из которых находятся в разных виртуальных сетях, чтобы убедиться, что удаленный рабочий стол включен.
Можно ли использовать netstat для проверки этого и использовать его в диапазоне IP-адресов... или лучше использовать команду powershell
new-object system.net.sockets.TCPclientList xsevernamex, 3389
2 ответа
Решение
nmap
отлично подходит для этого:
nmap -v -p 3389 -iL list-of-hosts.txt -oX results.xml
приведет к XML-файлу, который вы можете проанализировать программно, но существуют и другие параметры вывода.
Я предпочитаю PowerShell. Дайте мне знать, если это нужно какие-то корректировки. input.txt - это просто список компьютеров.
$computers = Import-Csv input.txt -Header "Name"
$output = @()
$computers | ForEach-Object {
$current = "" | Select-Object "Name","RdpOpen"
$result = Test-NetConnection $_.Name -CommonTCPPort RDP
$current.Name = $_.Name
$current.RdpOpen = $result.TcpTestSucceeded
$output += $current
}
$output | Export-Csv output.csv -NoTypeInformation