
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 $QUERY1
kann so gestaltet werden, dass das awk
nicht notwendig ist:
SELECT CONCAT(column, " ns +short") FROM ...
Ich habe dafür gesorgt, dass dig
die Abfragen aus der Standardeingabe aus der Pipe gelesen werden awk
und das grep
hilft uns, XXX
die 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.