ドメインとそのドメインエイリアスを調べる必要があるため、結果は次のとおりです。
ドメイン(+エイリアスなし)で私のネームサーバーを使用している場合 - >その後、ドメインとエイリアスの両方がマイネームサーバーを
使用している場合は印刷 - >次に印刷します
。使用し、エイリアスは使用しない場合を含む)。 MySQLにはドメインが保存され、作業中のスクリプトがあります。
for domain in `echo "$QUERY1" | mysql -N -s -u $USER -p$PASS $DBNAME -h$HOST | awk '{print $1}'; do
lookup=$(dig $domain ns +short)
if [[ "$lookup" =~ 'XXX' ]]; then
our=1
break
else
our=0
break
fi
done
このクエリでは、すべてのもの(ドメインとエイリアス)を一覧表示します。もちろん、エイリアスのみをリストしたり、ドメインのみをリストした別のクエリを作成したりすることもできます。ドメイン内のすべてのエイリアスを結合し、ドメイン名+エイリアスのリストを繰り返す必要があるようです。これらのNSを使用していないものがある場合は、印刷ドメインを表す変数を設定する必要があります。あなたの考えを教えてください。可能であれば解決策を共有してください。
答え1
作業中のスクリプトには、次の回避策を検討してください。
mysql --silent --skip-column-names \
--user="$USER" --password="$PASSWORD" \
--host="$HOST" --database="$DBNAME" \
--execute="$QUERY1" |
awk '{ printf("%s ns +short\n", $1) }' |
if dig -f - | grep -q "XXX"; then
our=1
else
our=0
fi
私は独自の文書化が可能なので、スクリプトで長いオプションを使用することを好みます。
クエリは$QUERY1
望ましくない方法で設計される可能性があります。awk
SELECT CONCAT(column, " ns +short") FROM ...
私はdig
パイプの標準入力からクエリを読みました。awk
これは出力を見るのに役立ちますgrep
。XXX
混乱したループは必要ありません。
明らかに、それはあなたが望むことをして、ただ今やっていることをすることで終わりません。しかし、私はDNSルックアップについてよく分からないので、それにはそのままにします。