
ドメインとこれらのドメイン エイリアスを調査する必要があるため、結果は次のようになります:
ドメイン (+ エイリアスがない) がネーム サーバーを使用している場合 -> 出力
ドメインとエイリアスの両方がネーム サーバーを使用している場合 -> 出力
その他すべて いいえ (ドメインがネーム サーバーを使用していて、エイリアスが使用していない場合も含む)。ドメインは 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 ルックアップについてはあまり詳しくないので、このままにしておきます。