複数のdnsサーバーに一度に問い合わせるスクリプトを改良した

以下のエントリーの積み残しである引数を付与して1行で完結するコマンドを作成してみた。
hostコマンドの[-t]オプションの場合だけ対応するという省機能のスクリプトだけどないよりはよいでしょう。

./name_resovl.sh

#!/bin/bash
 
cmd=""
dlist="8.8.8.8 9.9.9.9 9.9.9.10 1.1.1.1"
date=`date +%Y%m%d%H%M%S`
fqdn="google.com"
opt=""
logs="./logs"
i="array"
 
#logsディレクトリがない場合作成
[ ! -e $logs ] && mkdir -p  $logs
 
if [ "$1" = "-h" ] || [ "$1" = "--help" ]
        then
                echo "This script use host command - DNS lookup utility"
                echo "OPTIONS"
                echo "-t a     FQDN answer A Record."
                echo "-t ptr   FQDN answer MX Record."
                echo "-t mx    FQDN answer MX Record."
                echo "-t cname FQDN answer CNAME Record."
                echo "-t txt   FQDN answer TXT Record."
                echo "Example: $0 -t a google.com"
 
        elif
 
        [ $# = 0 ]
        then
 
read -t 120 -p "Input name resolution host(default:$fqdn): " fqdn
 
        case "$fqdn" in
                "") fqdn=google.com
                        ;;
                *)
                        ;;
        esac
        echo -e "\n"
 
read -t 120 -p "Input name resolution zone <<A,PTR,MX,TXT,ALL>>(default:None):" opt
 
        case "$opt" in
             A ) opt="-t a"
 
                      ;;
           PTR ) opt="-t ptr"
                        ;;
            MX ) opt="-t mx"
                        ;;
           TXT ) opt="-t txt"
                        ;;
           ALL ) opt="-a"
                        ;;
            "" ) opt=""
                        ;;
              *) echo -e "Cannot understand your answer.\nRetype name resolution zone \n"
                        exit 0
                        ;;
        esac
 
cmd="host $opt"
logs="./logs/resolv_"$date"_"$fqdn".log"
 
        for i in $dlist
        do
                echo "##### name server $i "
                echo "##### $cmd $fqdn $i "
                $cmd $fqdn $i
        done > $logs
 
        echo -e "\ncreate name resoluton result.\nlooking for current directory.\nfile: $logs"
 
        elif
        [ "$1" != "-t" ]
        then
                echo -e "Error! Invalid arguments!\nRun "$0 -h" and try again!"
 
        else
 
cmd="host $@"
logs="./logs/resolv_"$date"_"$3".log"
                for i in $dlist
        do
                echo "##### name server $i "
                echo "##### $cmd $i "
                $cmd $i
        done > $logs
 
                echo -e "\ncreate name resoluton result.\nlooking for current directory.\nfile: $logs"
fi

積み残し課題

積み残し:
〇ゾーン指定時に小文字が使えない(正規表現使おうとして失敗した)
〇名前解決するホストを一度に複数登録できるような機能を追加する
いくつかの修正を行い、以下エントリーで公開。

 

コメント

タイトルとURLをコピーしました