Je ne parviens pas à voir si mes noms d'hôtes de mon fichier sont soit un enregistrement A, soit un alias.


1

Voici mon script et je suis bon pour la section audacieuse. J'essaie de terminer mon script en vérifiant si mes noms d'hôte sont un enregistrement A ou un alias. Je n'ai pas de chance et j'ai vraiment besoin des conseils de quelqu'un. J'ai essayé d'utiliser grep et awk et semble ne pas fonctionner.

#!/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

C'est là que j'ai des problèmes. J'essaie de voir quels noms d'hôte de /tmp/final.csv sont soit un enregistrement A, soit un alias. Je ne sais pas comment faire pour que cela fonctionne et je suis sûr que le code est faux.
— jphil1971

Réponses:


2

Un alias dans DNS est un CNAME. Par conséquent, si vous vérifiez cela, il serait préférable de rechercher ce type d'enregistrement, utilisez l'option '-t CNAME'. Vous pouvez également envisager d'utiliser dig au lieu d'hôte (je pense que l'hôte est obsolète, mais il n'en est pas sûr), car il ne renvoie rien s'il s'agit d'un enregistrement A et peut-être plus facile à tester que le retour de l'hôte. Par exemple:

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

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

Cette dernière commande n'a pas de sortie. Si vous voulez vraiment utiliser 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

Je pense que vous devriez pouvoir terminer le script avec ça.


hostet nslookupsont en effet des outils déconseillés / non recommandés pour les opérations DNS. digest le recommandé.
— Patrick Mevzek

D'où avez-vous obtenu qui hostest obsolète? Il vient dans le même paquet de ISC que dig. C'est juste une version plus simple de dig.
— Johan Myréen

1
obsolète est peut-être trop fort, c’est juste que dès que vous apprenez à utiliser, digil n’ya aucun cas où vous devez revenir host. Alors, pourquoi apprendre 2 outils où l’un est clairement tout ce dont vous avez besoin? Comme le dit la documentation: "Le gestionnaire d'informations de domaine (dig) est l'outil de recherche le plus polyvalent et le plus complet." (discussion entre dig, host et nslookup)
— Patrick Mevzek

Je pensais l'avoir lu dans une page de manuel indiquant que l'hôte allait devenir obsolète, mais je ne le trouve plus. Il y avait un plan pour déprécier nslookup et host en 2004, alors c'est peut-être ce à quoi je pensais: en.wikipedia.org/wiki/Nslookup
— Dale
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.