過去に作ったもの。
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でなにかドメインを活用するものを作る際などに便利だった。結局自分の中でこれだけ書いて没になったけど。
もっとシンプルな方法があったら教えて下さい。