Dig auf zwei Listen durchführen

Dig auf zwei Listen durchführen

Ich muss eine Suche nach Domänen und deren Aliasnamen durchführen, das Ergebnis wird also sein:
WENN Domäne (+ hat keinen Alias) und meine Nameserver verwendet -> dann ausdrucken,
WENN sowohl Domäne als auch Alias ​​meine Nameserver verwenden -> dann ausdrucken,
alles andere nein (auch wenn Domäne meine Nameserver verwendet und Alias ​​nicht). Ich habe Domänen in MySQL gespeichert und hier ist das Skript, an dem ich arbeite:

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

In dieser ABFRAGE liste ich alles auf (sowohl Domänen als auch Aliase). Ich kann natürlich eine weitere Abfrage erstellen, um nur Aliase oder nur Domänen aufzulisten. Es scheint, dass ich alle Aliase der Domäne zusammenfassen und eine Schleife über die Domänennamen- und Aliasliste ausführen müsste. Wenn einer von beiden NS nicht verwendet, müsste ich eine Variable festlegen, die das Drucken der Domäne vorschreibt. Lassen Sie mich wissen, was Ihre Ideen sind, und teilen Sie mir, wenn möglich, bitte die Lösung mit.

Antwort1

Ziehen Sie die folgende Alternative zum Skript in Betracht, an dem Sie arbeiten:

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

Ich bevorzuge die Verwendung der langen Optionen in Skripten, da sie selbstdokumentierend sind.

Die Abfrage $QUERY1kann so gestaltet werden, dass das awknicht notwendig ist:

SELECT CONCAT(column, " ns +short") FROM ...

Ich habe dafür gesorgt, dass digdie Abfragen aus der Standardeingabe aus der Pipe gelesen werden awkund das grephilft uns, XXXdie Ausgabe zu finden.

Kein umständliches Looping erforderlich.

Offensichtlich macht es am Ende nicht das, was Sie tun möchten, sondern nur das, was Sie im Moment tun, aber da ich nicht so viel über DNS-Lookups weiß, belasse ich es dabei.

verwandte Informationen