Unix: 名前の IP アドレス解決をテストする方法

Unix: 名前の IP アドレス解決をテストする方法

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 

関連情報