어떻게 작동하게 만들까요?
스크립트 1:(이것은 작동하지 않습니다)
host=www.example.com
ip=$(getent hosts | grep $host | awk '{ print $1}')
echo $ip
스크립트 2:(이것은 작동하지 않습니다)
host=www.example.com
ip=$(getent hosts $host | awk '{ print $1}')
echo $ip
스크립트 3:(작동하지만 변수를 사용해야 합니다...)
ip=$(getent hosts www.example.com | awk '{ print $1}')
echo $ip
변수를 기반으로 적절한 호스트 파일 IP를 가져와야 합니다.
스폰서:(등/호스트)
127.0.0.1 localhost
1.1.1.1 www.example.com
답변1
당신이 가지고 있는 것은 효과가 있어야 하지만, 그렇지 않을 이유는 없습니다. 내 시스템에서는 확실히 작동합니다.
그럴 필요는 없습니다
grep
. 다음은 작동합니다.
ip=$(getent hosts "$host" | awk '{ print $1}')
답변2
를 사용하여 얻을 수 있는 두 가지 다른 결과 세트를 혼동하고 있습니다 getent hosts
.
getent hosts
대략 다음과 같은 결과를 반환합니다.cat /etc/hosts
getent hosts TARGET
hosts
의 항목을 사용하여/etc/nsswitch.conf
조회TARGET
하고 찾은 첫 번째 일치 항목을 반환 할 하나 이상의 호스트 데이터베이스
host
스크립트 1은 find 에서만 시작됩니다 /etc/hosts
. 다음과 같이 약간 단축할 수도 있습니다.
host=www.example.com
ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}')
echo $ip
스크립트 2와 3은 /etc/hosts
DNS를 검색하고 검색할 수도 있습니다. 어디에 넣었는지 확실하지 않거나 '
세 "
번째 스크립트가 작동하지 않습니다.