Estou tendo problemas para ver se meus nomes de host do meu arquivo são um registro A ou um alias

1

Aqui está o meu script e eu estou bem até a seção em negrito. Estou tentando terminar meu script verificando se meus nomes de host são um registro A ou um alias. Eu não estou tendo sorte e realmente preciso de conselhos de alguém. Eu tentei usar grep e awk e parece não funcionar.

#!/bin/sh
#Query DB for cnames
#Pulling cnames
#Lets use sed to clean up and remove "" that regex miss.
#Added dos2unix to get rid of the hidden M from /tmp/final.csv

mssql -f csv -c ~/applications/mssql/mssql.json -q "SELECT * FROM Cname" | cut -f 3 -d "," | sed 's/["]//g' | sort | uniq | dos2unix >/tmp/final.csv  

#Validating cnames from file /tmp/final.csv

while read -r host  
do  
    echo $host | egrep "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$" >/dev/null 2>&1  
if [ $? -eq 0 ]  
    then  
        echo "host $host 8.8.8.8"  
    else  
        echo "unable to resolve '$host'" >&2  
fi  
done < /tmp/final.csv

# removed weird stars from some of these lines -- thrig
#Verify whether it's an A record or an alias  
LOOKUP='host $host 8.8.8.8'  
if [ $? -eq 0 ]  
    then  
        echo $LOOKUP | grep -f "alias" | awk '{print $2}'| grep -v '#' | awk '{print $2}'  
    else     
        echo "$LOOKUP is null"  
fi
# what is this in relation to?? -- thrig  
done
    
por jphil1971 26.03.2017 / 17:02

1 resposta

2

Um alias no DNS é um CNAME, portanto, se você estiver verificando isso, seria melhor consultar esse tipo de registro, use a opção '-t CNAME'. Além disso, convém considerar o uso de escavação em vez de host (acho que o host está obsoleto, mas não tenho certeza disso), porque ele não retorna nada se for um registro A e pode ser mais fácil de testar do que como o host retorna. Por exemplo:

$ dig -t CNAME +short ftp.med.cornell.edu
web-prd01.med.cornell.edu.

$ dig -t CNAME +short web-prd01.med.cornell.edu

Esse último comando não tem saída. Se você realmente quer usar o host:

$ host -t CNAME ftp.med.cornell.edu
ftp.med.cornell.edu is an alias for web-prd01.med.cornell.edu.

$ host -t CNAME  web-prd01.med.cornell.edu
web-prd01.med.cornell.edu has no CNAME record

Acho que você deve terminar o script com isso.

    
por 26.03.2017 / 18:00