같은 유틸리티 host
와 dig
호스트 이름에 해당하는 IP 주소를 볼 수 있습니다.
도있다 getent
쿼리에 사용할 수있는 유틸리티 /etc/hosts
나 다른 NSS 데이터베이스는.
정의 된 위치에 관계없이 호스트 이름을 확인하는 편리한 표준 유틸리티 (데비안에서 사용할 수 있음)를 찾고 있습니다.
그것은 다소 비슷해야합니다
ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
답변
내가 아는 유일한 명령은 resolveip입니다.
http://linux.die.net/man/1/resolveip
그러나 mysql-server 만 제공되므로 모든 곳에 설치하는 것이 이상적이지 않을 수 있습니다.
답변
문제가 ipv6을 사용하여 이러한 이름을 확인하지 않으려는 경우 getent에게 ipv4 만 사용하도록 요청하십시오. 이것은 모든 ipv4 주소를 열거합니다 :
giuseppe@blatta:~$ getent ahostsv4 www.google.com | cut -d' ' -f1 | sort -u
173.194.40.80
173.194.40.81
173.194.40.82
173.194.40.83
173.194.40.84
답변
문제는 같은 호스트 이름을 해결하기 위해 몇 가지의 API가있다 gethostbyname
, getaddrinfo
그리고inet_pton
그 중 일부는 하나 개 이상의 주소를 반환 할 수 및 / 또는 당신이 원하는 주소의 유형을 조회 할 수 있습니다.
하나의 IPv4 주소 를 얻는 이식 가능한 방법을 원한다면 다음을 수행하십시오.
perl -MSocket -le 'print inet_ntoa inet_aton shift' www.google.com
답변
(이 답변은 컴퓨터에 루트 인 경우에만 적용됩니다.)
나는 이것에 대해 화가 났고 모든 컴퓨터 에서 dnsmasq 를 실행 하도록 표준화했습니다 . Dnsmasq는 간단한 DNS 캐시입니다. 부수적 인 이점으로 /etc/hosts
DNS 를 통한 컨텐츠를 제공합니다 .
답변
gethostip -d name.domain
syslinux
우분투 (그리고 아마도 데비안) 의 패키지에서. -d
십진 형식을 출력합니다.
답변
나는 순수한 펄 지식을 사용하고 오류 처리와 함께 작은 스크립트를 만들었습니다.
/ usr / local / bin / gethostip :
#!/usr/bin/perl
# inspired by: /unix/71379/host-lookup-that-respects-etc-hosts#71393
use strict;
use Socket;
my $name = $ARGV[0];
if ($name eq '') {
print STDERR "Usage: gethostip <hostname>\n";
exit 1;
}
my $ip = inet_aton($name);
die("Unable to resolve host name $name") if ($ip eq '');
my $ipstr = inet_ntoa($ip);
print "$ipstr\n";
초기 아이디어를 위해 Stéphane Chazelas에게 Thx