我正在使用以下脚本在多台服务器上挖掘域。但是,如果域不存在,则输出也是“由服务器解析:domain.com ;”。这只是因为命令的执行返回 0 。如果没有记录,有人能帮助我吗?这应该会告知正确的语句,而不是打印错误的语句。
#!/bin/bash
a=$1
go="8.8.8.8"
f2="4.2.2.2"
if [ "$a" = "" ]
then
echo "Usage: `basename $0` domain.com"
exit 1
else
dig @"$go" "$a" +short
if [ "$?" != 0 ]
then
echo "Server: $go did not resolve: $a ; "
else
echo "Resolved by $go: $a ; "
echo " "
fi
fi
if [[ -z $(dig @"$go" "$a" +short) ]] 对我有用谢谢:)
答案1
代替:
dig @"$go" "$a" +short
if [ "$?" != 0 ]
尝试:
if [[ -z $(dig @"$go" "$a" +short) ]]
答案2
dig 是一个用于检查 DNS 服务器问题的工具,由于 NXDOMAIN 不是问题,因此它将返回 0。dig
会抛出其他代码,例如,当服务器关闭时,查询会被拒绝...
切换到不同的工具,如主机:
$ host serverfault.com 8.8.8.8 >/dev/null
$ echo $?
0
$ host serverfaultxyz.com 8.8.8.8 >/dev/null
$ echo $?
1