Тут по роду службы получил ответственное задание - отлукапить более 100 IP адресов.
подход визуально прост берем IP, и пихаем в консоль команду:
nslookup 127.0.0.1
Вывод нужно распарсить и записать в файл. Итого на одну запись порядка 30 секунд, а их 100. И для того чтобы все обойти потребуется около часа. Как по мне - непозволительная роскошь.
Я ленив настолько, что для решения этой задачи мне потребовалось не более 10-ти минут. Мне помог PowerShell.
Используя PowerShell И .Net был написан следующий код:
Workflow Get-DNSNames([string[]]$IPAddresses){
foreach -parallel ($IP in $IPAddresses){
try{
@{$IP = $(([system.net.dns]::GetHostByAddress($IP)).hostname)}
}catch{
@{$IP = "N/A"}
}
}
}
$List = Get-DNSNames -IPAddresses $(Get-Content "C:\IPAddresses.txt").Split("[\r\n]")
$List | Out-File "C:\IPAddresses_Complete.txt"
Обратите внимание, что Get-DNSNames не функция, а воркфлоу, в его плюсы входит возможность параллельного выполнения для оператора foreach, что может увеличивать скорость выполнения скрипта в 5 раз.
Собственно и все!