両方のリストでdigを実行する

両方のリストでdigを実行する

ドメインとそのドメインエイリアスを調べる必要があるため、結果は次のとおりです。
ドメイン(+エイリアスなし)で私のネームサーバーを使用している場合 - >その後、ドメインとエイリアスの両方がマイネームサーバーを
使用している場合は印刷 - >次に印刷します
。使用し、エイリアスは使用しない場合を含む)。 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これは出力を見るのに役立ちますgrepXXX

混乱したループは必要ありません。

明らかに、それはあなたが望むことをして、ただ今やっていることをすることで終わりません。しかし、私はDNSルックアップについてよく分からないので、それにはそのままにします。

関連情報