Làm cách nào để thực hiện tra cứu DNS ngược, đó là cách tôi giải quyết địa chỉ IP cho tên máy chủ DNS của nó trong Perl?Tra cứu DNS ngược trong perl
Trả lời
gethostbyaddr và các cuộc gọi tương tự. Xem http://perldoc.perl.org/functions/gethostbyaddr.html
Có thể có cách dễ dàng hơn, nhưng đối với IPv4, nếu bạn có thể thực hiện tra cứu DNS thông thường, bạn luôn có thể tự mình xây dựng truy vấn ngược lại. Đối với địa chỉ IPv4 A.B.C.D, tra cứu bất kỳ bản ghi PTR nào tại D.C.B.A.in-addr.arpa. Đối với IPv6, bạn lấy 128 nibbles hex và lật chúng xung quanh và nối thêm ipv6.arpa. và làm điều tương tự.
Nếu gethostbyaddr không phù hợp với nhu cầu của bạn, Net::DNS linh hoạt hơn.
use Socket;
$iaddr = inet_aton("127.0.0.1"); # or whatever address
$name = gethostbyaddr($iaddr, AF_INET);
Nếu bạn cần chi tiết hơn thông tin DNS sử dụng các mô-đun Net::DNS, đây là một ví dụ:
use Net::DNS;
my $res = Net::DNS::Resolver->new;
# create the reverse lookup DNS name (note that the octets in the IP address need to be reversed).
my $IP = "209.85.173.103";
my $target_IP = join('.', reverse split(/\./, $IP)).".in-addr.arpa";
my $query = $res->query("$target_IP", "PTR");
if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "PTR";
print $rr->rdatastr, "\n";
}
} else {
warn "query failed: ", $res->errorstring, "\n";
}
Original Source EliteHackers.info, các chi tiết đó là tốt.
này có thể có ích ...
$ip = "XXX.XXX.XXX.XXX" # IPV4 address.
my @numbers = split (/\./, $ip);
if (scalar(@numbers) != 4)
{
print "$ip is not a valid IP address.\n";
next;
}
my $ip_addr = pack("C4", @numbers);
# First element of the array returned by gethostbyaddr is host name.
my ($name) = (gethostbyaddr($ip_addr, 2))[0];
một liner:
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("79.81.152.79"), AF_INET)'
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("69.89.27.250"), AF_INET)'
Returns: Không thể tìm thấy chuỗi terminator "'" bất cứ nơi nào trước khi EOF tại -e dòng 1.
perl -MSocket -E "say scalar gethostbyaddr(inet_aton(\"69.89.27.250\"), AF_INET)"
Returns: box250.bluehost.com
tôi phải thay đổi dòng để sử dụng dấu ngoặc kép và sau đó thoát ra dấu ngoặc kép quanh địa chỉ IP
- 1. Tra cứu ngược C++
- 2. Cần thực hiện tra cứu DNS ngược của một địa chỉ IP cụ thể trong java
- 3. Tra cứu DNS từ máy chủ DNS tùy chỉnh trong C#
- 4. Tra cứu IP ngược với PHP
- 5. Đảo ngược DNS trong Ruby?
- 6. tra cứu ngược lại trên bản đồ
- 7. Tra cứu bản đồ đảo ngược
- 8. Trong Ruby, làm thế nào để bạn đảo ngược dns tra cứu tên máy của một máy tính zeroconf/bonjour?
- 9. Redis, hết hạn phiên và tra cứu ngược
- 10. Làm thế nào để phát hiện lỗi tra cứu DNS trong JavaScript
- 11. Tra cứu ngược lại Django của các phím nước ngoài
- 12. Node.js: Vô hiệu hóa tra cứu DNS UDP và sử dụng IP đã cho thay vì
- 13. tra cứu trong c
- 14. Sự khác biệt giữa tra cứu dns đệ quy và lặp lại
- 15. Thuật toán nào các máy chủ DNS sử dụng để tra cứu nhanh hơn?
- 16. API tra cứu mã zip?
- 17. Bảng tra cứu trong OCaml
- 18. Tra cứu NSString trong NSSet
- 19. Chức năng tra cứu bảng tra cứu từ k & r
- 20. Tra cứu Quadtree
- 21. API tra cứu CUSIP miễn phí
- 22. Tra cứu bảng Lua
- 23. Django: Không prefetch_related() theo tra cứu mối quan hệ ngược lại?
- 24. tra cứu tên đường dẫn trong Linux?
- 25. tra cứu tên bảng trong PSQL
- 26. Tra cứu tên trong các mẫu C++
- 27. Tôi có thể thực hiện tra cứu DNS bằng cách sử dụng C/C++ trên Linux như thế nào?
- 28. Thực hiện tra cứu DNS để phân giải tên máy chủ thành địa chỉ IP bằng cách sử dụng JavaScript
- 29. R: tra cứu môi trường
- 30. Tra cứu không lặp lại
Đó có thể là bởi vì bạn đang sử dụng cmd.exe dưới cửa sổ . – spacebat