我的脚本有问题。在我的工作中,我经常要检查域名的PTR、MX记录和类似的数据。我完成了大部分脚本,但当我做类似
的事情时,问题就出现了,这是子域
e-learning.go4progress.pl
这是域,但二级?
simple.com.pl
现在在我的脚本中有这样的东西:如果我不放www,它会添加并执行
dig www.e-learning.go4progress.pl
dig e-learning.go4progress.pl
dig go4progress.pl
他计算点数并减去1,但问题是当域看起来像时
simple.com.pl
因为脚本也为挖掘
com.pl
我不检查包含com.pl,co.uk,gov.pl的很多域。我有一个想法,制作数组,并将我在脚本中放入的内容与数组进行比较,当它在数组的字符串组件中找到时,他减去2而不是1;)我粘贴了一部分脚本,以便更好地理解他为什么要背1。
url="`echo $1 | sed 's~http[s]*://~~g' | sed 's./$..' | awk '!/^www/ {$0="www." $0}1'`"
ii=1
dots="`echo $url | grep -o "." | wc -l`"
while [ $ii -le $dots] ; do
cut="`echo $url | cut -d "." -f$ii-9`"
ip="`dig +short $cut`"
host="`dig -x $ip +short`"
if [[ -z "$host" ]]; then
host="No PTR"
fi
echo "strona: $cut Host: $host"
ii=$[ii + 1]
也许你对如何解决我的问题有不同的想法。
第二个问题是如何区分子域和域
我需要比较子域的mx记录(当url包含子域时)和顶级域的mx纪录
我在等你的回复;)
我的解决方案是找到在注册商处注册的域名:
wget https://raw.githubusercontent.com/gavingmiller/second-level-domains/master/SLDs.csv
DOMAIN="www.e-learning.go4progress.co.uk";
KEEPPARTS=2;
TWOLEVELS=$( /bin/echo "${DOMAIN}" | /usr/bin/rev | /usr/bin/cut -d "." --output-delimiter=".\" -f 1-2 | /usr/bin/rev );
if /bin/grep -P ",.${TWOLEVELS}" SLDs.csv >/dev/null; then
KEEPPARTS=3;
fi
DOMAIN=$( /bin/echo "${DOMAIN}" | /usr/bin/rev | /usr/bin/cut -d "." -f "1-${KEEPPARTS}" | /usr/bin/rev );
echo "${DOMAIN}"
感谢https://github.com/gavingmiller/second-level-domains和https://github.com/medialize/URI.js/issues/17#issuecomment-3976617