Unix: 이름에 대한 IP 주소 확인을 테스트하는 방법.
쉘 스크립트를 통해 DNS 항목을 사용하여 IP 주소를 이름으로 확인할 수 있는지 확인해야 합니다.
암호:
DNS_Lookup()
{
LOOKUP=$(nslookup $1)
FAIL_COUNT=$(echo $LOOKUP | grep "** server can't find " | wc -l);
if [ $FAIL_COUNT -eq 1 ];then
echo "Unable to resolve DNS for $1"
else
echo "IP:$1 DNS Name:$(echo $LOOKUP | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')"
return 0
fi
}
DNS_Lookup 192.168.27.191
위의 코드는 가능한 모든 상황에서 작동하지 않습니다. 운영 체제: CentOS
답변1
다음과 같이 매개변수 getent
와 함께 명령을 사용할 수 있습니다 .hosts
getent hosts www.google.com
그리고 얻은 결과 수를 세어보세요.
getent hosts www.google.com | wc -l
getent
이름 서비스 전환 라이브러리를 사용하여 다양한 이름 조회를 수행합니다. 두 번째 매개변수를 사용하면 찾고 있는 데이터베이스 유형을 정의할 수 있습니다. 세부정보를 확인하세요 man getent
.
답변2
두 가지 가능한 휴대용 접근 방식이 표시됩니다.
#!/bin/sh
reverseDNS=$(host 8.8.8.8)
if [ $? != 0 ]; then
printf '%s\n' "Reverse DNS [FAILED]"
else
printf '%s\n' "Reverse DNS [OK]"
fi
###### nslookup ##########
nslookup_func(){
nslookup=$(nslookup google.com)
if [ "$nslookup" = ";; connection timed out; no servers could be reached" ]; then
printf '%s\n' "nslookup [FAILED]"
else
printf '%s\n' "nslookup [OK]"
fi
}
nslookup_func