У нас есть более 250 доменных имен с одним регистратором, которые из-за многолетней организационной халатности указывают на различные серверы, на которых размещены веб-сайты.
Меня попросили убрать это. вздох
Для начала я хочу получить список каждого доменного имени и их записей DNS A, чтобы увидеть, на какой сервер они указывают. Кто-нибудь знает, как я могу это сделать?
Еще более простой ответ - получить записи DNS от регистратора, чтобы увидеть, куда они указывают. Большинство хороших оптовых регистраторов имеют функцию экспорта только для такого рода вещей. Теперь, если все они размещаются за пределами сайта, вам может потребоваться прибегнуть к коду, чтобы получить для них записи A. Но видение того, что разрешение DNS было делегировано на ns1.hosting.com, будет большой подсказкой, которая поможет вам найти подходящую хостинговую компанию и начать работу над получением учетных данных.
Вот как я бы сделал это в PowerShell, используя текстовый файл с одним доменом в строке.
Get-Content domains.txt | %{
new-object -type PSObject -property @{
Domain=$_
IPAddr=[System.Net.Dns]::GetHostAddresses($_)
}
}
Что выводит что-то вроде:
Domain IPAddr
------ ------
www.google.com {2001:4860:4001:803::1011, 74.125.224.145, 74.125.224....
www.yahoo.com {2001:4998:c:401::c:9101, 2001:4998:c:401::c:9102, 200...
www.flickr.com {216.115.107.206, 67.195.141.201, 67.195.141.200, 98.1...
www.serverfault.com {64.34.119.12}
www.stackexchange.com {64.34.119.12}
Вот как я бы сделал это в Perl с тем же текстовым файлом.
perl -MSocket -nE 'chomp; say $_, " ", inet_ntoa "".gethostbyname $_;' domains.txt
Что выводит что-то вроде:
www.google.com 74.125.141.103
www.yahoo.com 72.30.38.140
www.flickr.com 216.115.107.206
www.serverfault.com 64.34.119.12
www.stackexchange.com 64.34.119.12
В Баше:
Поместите свои домены, по одному в строке, в domains.txt
.
for domain in $( cat domains.txt ); do host -ta $domain; done
Это напечатает что-то вроде:
stackoverflow.com has address 64.34.119.12
serverfault.com has address 64.34.119.12