У меня есть скрипт, который ищет конкретные записи для домена.
Т.е. домен Cpanel.domain;ftp.domain;mail.domain;MX запись и TXT записи. Когда конкретная запись не найдена, сценарий останавливается, но не завершается ошибкой или завершается, пока не будет отменен вручную
echo "==[ DNS Check ]=="
echo "Google 8.8.8.8 : $(dig @8.8.8.8 $dom +short)"
echo "Cloudflare 1.1.1.1 : $(dig @1.1.1.1 $dom +short)"
echo "Quad 9 9.9.9.9 : $(dig @9.9.9.9 $dom +short)"
echo "Afrihost ns.dns1.co.za : $(dig @ns.dns1.co.za $dom +short)"
#echo "Afrihost 169.1.1.1 : $(dig @169.1.1.1 $dom +short)"
echo "-- -- -- -- -- -- -- -- -- -- -- -- "
echo
echo "==[ PUBLIC ]=="
getIP=$(dig @8.8.8.8 +short $dom)
if [[ "$getIP" == "" ]];then
echo "Domain NSLookup failed!! - Public DNS Resolution failed."
else
echo "IP : $getIP :: $(nslookup $getIP |grep "name =" |awk '{print $4}')"
echo "cPanel : $(dig @8.8.8.8 +short cpanel.$dom) -- $(nslookup $(dig @8.8.8.8 +short cpanel.$dom) |grep "name =" |awk '{print $4}')"
echo "FTP : $(dig @8.8.8.8 +short ftp.$dom) -- $(nslookup $(dig @8.8.8.8 +short ftp.$dom) |grep "name =" |awk '{print $4}')"
echo "mail.$dom : $(dig @8.8.8.8 +short mail.$dom) -- $(nslookup $(dig @8.8.8.8 +short mail.$dom) |grep "name =" |awk '{print $4}')"
fi
Вывод:
./resolve somedomain
Date : 17/10/2019 Time : 07.21.11
==[ DNS Check ]==
Google 8.8.8.8 : 103.9.170.0
Cloudflare 1.1.1.1 : 103.9.170.0
Quad 9 9.9.9.9 : 103.9.170.0
Afrihost ns.dns1.co.za :
-- -- -- -- -- -- -- -- -- -- -- --
==[ PUBLIC ]==
IP : 103.9.170.0 :: hostingservername.
>
Я бы хотел не останавливаться, а двигаться дальше или просто указать, что запись не найдена, а затем перейти к следующей команде.
В «>» будет запись cpanel.domain A, которая не существует для рассматриваемого домена.
Я хотел бы, чтобы это было напечатано «not found», а затем перейдите к следующей команде.