Em vez de:
dig @"$go" "$a" +short
if [ "$?" != 0 ]
tente:
if [[ -z $(dig @"$go" "$a" +short) ]]
Estou usando o seguinte script para cavar um domínio em vários servidores. Mas se um domínio não existir, a saída será "Resolved by server: domain.com;". Apenas porque a execução do comando retorna 0. Alguém pode me ajudar se não houver registros que devem informar a declaração correta em vez de imprimir uma declaração errada.
#!/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
se [[-z $ (dig @ "$ go" "$ a" + curto)]] trabalhou para mim obrigado :)
dig é uma ferramenta para verificar problemas em um servidor DNS, uma vez que um NXDOMAIN não é um problema que retornará 0.
dig irá lançar outros códigos, e. quando o servidor está inoperante, a consulta é recusada ...
Mude para uma ferramenta diferente, como host:
$ host serverfault.com 8.8.8.8 >/dev/null
$ echo $?
0
$ host serverfaultxyz.com 8.8.8.8 >/dev/null
$ echo $?
1
Tags bash