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