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
bash
shell-script
grep
dns
jphil1971
la source
la source
Réponses:
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:
Cette dernière commande n'a pas de sortie. Si vous voulez vraiment utiliser host:
Je pense que vous devriez pouvoir terminer le script avec ça.
la source
host
etnslookup
sont en effet des outils déconseillés / non recommandés pour les opérations DNS.dig
est le recommandé.host
est obsolète? Il vient dans le même paquet de ISC quedig
. C'est juste une version plus simple dedig
.dig
il n’ya aucun cas où vous devez revenirhost
. 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)