Какая команда в перле заменяет программу host ?
Требуется из обратной зоны по ip-адресу получить имя хоста.
>Какая команда в перле заменяет программу host ?
>Требуется из обратной зоны по ip-адресу получить имя хоста.
gethostbyaddr - обратное преобразование
gethostbyname - прямое
ещё есть Net::DNS
Не подскажете пример команды gethostbyaddr ADDR,TYPEADDR. (так кажется пишется, пишу по памяти)
Вызвало затруднение TYPEADDR, пробовал ставить из примера, взятого в perldoc - не возвращает имя хоста.
>gethostbyaddr - обратное преобразование>ещё есть Net::DNS
через модуль Net::DNS получилось, причем сразу.
>Не подскажете пример команды gethostbyaddr ADDR,TYPEADDR.Пример из perldoc
# cat test2.pl
use Socket;
$iaddr = inet_aton("194.87.0.50");
my $host = gethostbyaddr($iaddr, AF_INET);
print $host, "\n";# perl test2.pl
www.ru
># cat test2.pl
>use Socket;
>$iaddr = inet_aton("194.87.0.50");
>my $host = gethostbyaddr($iaddr, AF_INET);
>print $host, "\n";
>
># perl test2.pl
>www.ru
Заметил разницу при определении имени хоста с использованием use Socket
и Net::DNS::Resolver.
В первом случае идет обращение к файлу hosts, только потом к nameserver-у. В итоге, возвращается имя без доменного суффикса.
Т.е. если в файле hosts указан псевдоним хоста без суффикса вида host.domain.ru host, то результатом этой программы является вывод имени в виде host
Если я делаю с использованием DNS::Resolver, то возвращается имя хоста с суффиксом. Т.е. DNS::Resolver обращается сразу к nameserver-у, минуя установки resolv.conf и hosts. Вот такое наблюдается разночтение двух методов определения имени хостов.use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $query = $res->search("192.168.1.1");if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "PTR";
print $rr->ptrdname, "\n";
}
} else {
warn "query failed: ", $res->errorstring, "\n";
}
>># cat test2.pl
>>use Socket;
>>$iaddr = inet_aton("194.87.0.50");
>>my $host = gethostbyaddr($iaddr, AF_INET);
>>print $host, "\n";
>>
>># perl test2.pl
>>www.ru
>Заметил разницу при определении имени хоста с использованием use Socket
>и Net::DNS::Resolver.