
Preciso executar uma escavação nos domínios e nesses aliases de domínio, então o resultado será:
SE o domínio (+ não tiver um alias) e estiver usando meus servidores de nomes -> então imprima
SE o domínio e o alias estiverem usando meu nome Servidores -> então imprima
Todo o resto não (inclusive quando o domínio está usando meus servidores de nomes e o alias não). Tenho domínios armazenados no MySQL e aí está o script no qual estou trabalhando:
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
Nesta CONSULTA estou listando tudo (domínios e aliases). É claro que posso criar outra consulta para listar apenas aliases ou apenas domínios. Parece que eu precisaria agrupar todos os aliases do domínio e percorrer a lista de nomes de domínio + aliases. Se algum deles não usasse NS, eu teria que definir a variável que determina a impressão do domínio. Deixe-me saber quais são suas idéias e compartilhe a solução, se possível.
Responder1
Considere a seguinte alternativa ao script em que você está trabalhando:
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
Prefiro usar opções longas em scripts, pois são autodocumentadas.
A consulta $QUERY1
pode ser elaborada de forma que awk
não seja necessário:
SELECT CONCAT(column, " ns +short") FROM ...
Eu li dig
suas consultas a partir da entrada padrão do tubo que vem awk
e isso grep
nos ajuda a encontrar XXX
a saída.
Não é necessário nenhum loop confuso.
Obviamente, ele não faz o que você quer fazer no final, apenas o que você faz no momento, mas como não sei muito sobre pesquisas de DNS, deixarei por isso mesmo.