Perlben szeretném meghatározni egy host IP címét, de sajnos a gethostbyname néha hamis értéket ad vissza. Próbáltam a Net::DNS csomaggal is, de ilyen esetekben az is hasonlóan hamis értéket ad vissza.
Gyanítom, olyan esetben, amikor a domaint már megszüntették, vagy a host nevét már nem oldja fel a domain, de régebben még feloldotta.
A host parancs eredménye szerint
Host hostname not found: 3(NXDOMAIN)
Ennek ellenére, perlből megkapom a régi IP címet, bármelyik módszert is használom.
Hogyan tudok a host-hoz hasonló eredményt kapni normál perl eszközökkel, anélkül, hogy a host parancs kimenetét elemezgetném?
- 143 megtekintés
Hozzászólások
A hamis érték alatt akkor azt érted, hogy egy lejárt domain esetén is visszadja a régi IP-t?
Próbáltad a Net::DNS::Dig -et is? (Én még nem használtam, csak tudom hogy létezik...)
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Rosszabb. Ha a domain nem is járt le, csak egy adott zónáját szüntették meg, akkor is visszaadja a zóna régi IP címét, de lejárt, megszűnt domain esetén is visszaadja a régit. Lehet a SOA Expire értékéig, ami általában egy hét. Egy hét múlva kiderül, hogy így van-e.
A Dig-et még nem próbáltam, ha nem lesz más megoldás, telepítem és megnézem.
- A hozzászóláshoz be kell jelentkezni
En mondjuk megneznem egy strace-el, hogy a host parancs es a perl kod mit csinal maskepp.
- A hozzászóláshoz be kell jelentkezni
C-ben a gethostbyname() IPv6 óta nem ajánlott. https://linux.die.net/man/3/gethostbyname leírás első sora: "The gethostbyname() and gethostbyaddr() functions are obsolete. Applications should use getaddrinfo(3) and getnameinfo(3) instead."
- https://metacpan.org/pod/Socket::GetAddrInfo
- https://stackoverflow.com/questions/24574821/domain-name-to-ipv6-addres… (példa a Socket::GetAddrInfo-ra, és lentebb Net::DNS::Resolver -re)
(azt nem tudom hogy a problémát megoldják e, mindenesetre a gethostbyname() felejtendő)
- A hozzászóláshoz be kell jelentkezni