LoginSignup
1
1

More than 5 years have passed since last update.

bashでApex(ルート)ドメインか否かを調べる方法

Last updated at Posted at 2016-04-20

過去に作ったもの。
bashで関数化してあるのでコピペで使える。

function is_apex() {
        local domain=$1
        local APEX=
        echo $domain | grep "^www\." >/dev/null 2>&1
        if [ "$?" -eq 0 ] ; then
                APEX=`echo $domain | cut -c 5-`
                dig $APEX a | grep ".*IN.*[^SO]A.*[0-9.]\{7,15\}" >/dev/null 2>&1
                if [ "$?" -eq 1 ] ; then
                        return 2
                else
                        WITH_WWW=0
                fi
        else
                dig www.$domain a | grep ".*IN.*[^SO]A.*[0-9.]\{7,15\}" >/dev/null 2>&1
                if [ "$?" -eq 1 ] ; then
                        return 2
                else
                        APEX="$domain"
                        WITH_WWW=1
                fi
        fi
        whois $APEX | grep "^NOT FOUND\|^No match" >/dev/null 2>&1
        if [ "$?" -eq 1 ] ; then
                # Apex Domain.
                if [ "$WITH_WWW" -eq 1 ] ; then
                        return 0
                else
                        return 1
                fi
        else
                return 2
        fi
}

return 2が帰ってくればApexドメインあるいはwwwつきのドメインは存在しない(記述が少ないのでドメインが両方共存在しない場合もこちらになる)ことになり、
return 1が帰ってくれば両方共存在することになる。
return 0が帰ってくればもともと入力されたものがApexドメインであるということになる。

いいたいことはこれだけ。
bashは汎用的なのでWebでなにかドメインを活用するものを作る際などに便利だった。結局自分の中でこれだけ書いて没になったけど。

もっとシンプルな方法があったら教えて下さい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1