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
ネームサービス移行ライブラリを使用して、さまざまなネーム検索を実行します。 2番目のパラメータを使用すると、探しているデータベースの種類を定義できます。詳細を確認してくださいman getent
。
答え2
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