我需要对域和这些域别名进行挖掘,因此结果将是:
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 查找不太了解,所以我就留到这里。