
Necesito ejecutar una excavación en los dominios y los alias de estos dominios, por lo que el resultado será:
SI el dominio (+ no tiene un alias) y está usando mis servidores de nombres -> luego imprima
SI tanto el dominio como el alias están usando mi nombre Servidores -> luego imprima
Todo lo demás no (incluso cuando el dominio usa mis servidores de nombres y mi alias no). Tengo dominios almacenados en MySQL y ahí está el script en el que estoy trabajando:
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
En esta CONSULTA estoy enumerando todo (tanto dominios como alias). Por supuesto, puedo crear otra consulta para enumerar solo alias o solo dominios. Parecería que necesitaría agrupar todos los alias del dominio y recorrer la lista de nombre de dominio + alias. Si alguno de los dos no usa NS, tendría que configurar la variable que dicta la impresión del dominio. Déjame saber cuáles son tus ideas y comparte la solución, si es posible.
Respuesta1
Considere la siguiente alternativa al script en el que está trabajando:
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
Prefiero usar las opciones largas en los scripts ya que se autodocumentan.
La consulta $QUERY1
se puede diseñar de tal manera que awk
no sea necesaria:
SELECT CONCAT(column, " ns +short") FROM ...
He leído dig
sus consultas desde la entrada estándar de la tubería proveniente awk
y grep
nos ayuda a encontrarla XXX
en la salida.
No se requieren bucles complicados.
Obviamente, no hace lo que quieres hacer al final, sólo lo que haces en este momento, pero como no sé mucho sobre búsquedas de DNS, lo dejaré así.