
我需要對網域和這些網域別名進行挖掘,因此結果將是:
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
在此查詢中,我列出了所有內容(網域和別名)。我當然可以建立另一個查詢來僅列出別名或僅列出網域。看來我需要將網域的所有別名組合在一起,並循環遍歷網域+別名清單。如果其中任何一個不使用 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 查找不太了解,所以我就留到這裡。