두 개의 목록에 대해 발굴 수행

두 개의 목록에 대해 발굴 수행

도메인과 이러한 도메인 별칭에 대해 조사를 실행해야 하므로 결과는 다음과 같습니다.
IF 도메인(+에 별칭이 없음)이고 내 이름 서버를 사용하고 있음 -> 그런 다음
도메인과 별칭이 모두 내 이름을 사용하고 있는지 IF를 인쇄합니다. 서버 -> 그런 다음 다른 모든 항목을 인쇄합니다
(도메인이 내 이름 서버를 사용하고 별칭을 사용하지 않는 경우 포함). 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

이 QUERY에는 모든 것(도메인과 별칭 모두)이 나열되어 있습니다. 물론 별칭만 나열하거나 도메인만 나열하는 다른 쿼리를 만들 수도 있습니다. 도메인의 모든 별칭을 함께 그룹화하고 도메인 이름 + 별칭 목록을 반복해야 할 것 같습니다. 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.grepXXX

지저분한 루핑이 필요하지 않습니다.

분명히 최종적으로 원하는 작업은 수행하지 않고 현재 수행하는 작업만 수행합니다. 그러나 저는 DNS 조회에 대해 너무 많이 알지 못하기 때문에 거기까지 두겠습니다.

관련 정보