以下のワンライナーをちょこっと改善してスクリプトにしてみた。
デバッグコードと汚いコメントアウトがあることはご愛敬。
実行すると対話形式でFQDNと解決したいゾーン名(A,PTR,MX,TXT,NS)を指定できる。
Input name resolution host(default:google.com):
Input name resolution zone <<A,PTR,MX,TXT,NS>>(default:A):
スクリプト名:name_resolve.sh
コード:
#!/bin/bash
dlist=`cat dns`
fqdn="google.com"
date=`date +%Y%m%d%H%M%S`
logs="./logs"
#sleep 2
#logsディレクトリがない場合作成
[ ! -e $logs ] && mkdir -p $logs
read -t 120 -p "Input name resolution host(default:$fqdn): " fqdn
case "$fqdn" in
# "") fqdn=$fqdn
"") fqdn=google.com
;;
*)
;;
esac
#echo $fqdn && sleep 1
#debug end
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"
#debug code
#echo $opt && sleep 1
#echo $cmd && sleep 1
#debug end
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"
積み残し:
〇120秒以内に入力できなかった場合のエラー処理が記載されていない
〇冒頭で宣言できていない変数「cmd」がある
コメント