Perl IP cím meghatározása

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?

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."

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.

En mondjuk megneznem egy strace-el, hogy a host parancs es a perl kod mit csinal maskepp.

Szerkesztve: 2020. 03. 09., h – 13:46

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."

(azt nem tudom hogy a problémát megoldják e, mindenesetre a gethostbyname() felejtendő)