도메인과 해당 도메인 별칭에 대해 조사해야 하므로 결과는 다음과 같습니다.
도메인(+ 별칭 없음)이고 내 이름 서버를 사용하고 있는 경우 -> 그런 다음
도메인과 별칭이 모두 내 이름 서버를 사용하는 경우 인쇄 -> 그런 다음 인쇄 out
다른 모든 것은 그렇지 않습니다(도메인이 내 이름 서버를 사용하고 별칭은 사용하지 않는 경우 포함). 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
이는 출력을 보는 데 도움이 됩니다 grep
.XXX
혼란스러운 루프가 필요하지 않습니다.
분명히 그것은 당신이 원하는 일을 하고 단지 지금 하고 있는 일을 하는 것으로 끝나지 않습니다. 그러나 나는 DNS 조회에 대해 잘 모르기 때문에 그것에는 그대로 두겠습니다.