--- samba4.sh.272 2021-01-08 09:10:31.190605322 +0100 +++ samba4.sh.272vch 2021-01-07 11:38:27.064131368 +0100 @@ -650,19 +650,6 @@ exit 1 fi - # ceci est un contournement. dans certain cas, la création de l'entrée DNS n'est pas correctement faite - # après la jonction au domaine AD. - # il faut tester la présence, et si elle manque ajouter l'entrée. - # https://dev-eole.ac-dijon.fr/issues/28675 - if dig "${AD_HOST_NAME}.${AD_REALM}" | grep "${AD_HOST_IP}" - then - echo "${AD_HOST_NAME} : Déjà inscrit!" - else - echo "${AD_HOST_NAME} : à créer" - # je n'ai pas le nom du DC1, j'utilise le nom par défault avec la résolution du domaine (!), comme 1er param - samba-tool dns add "${AD_REALM}" "${AD_REALM}" "${AD_HOST_NAME}" A "${AD_HOST_IP}" -U"${AD_DELEGATION}%${AD_DELEGATION_PASSWORD}" - fi - local IP_SERVER IP_SERVER=$(host "${AD_REALM}" | cut -d" " -f4) if ! net ads join -U"${AD_DELEGATION}%${AD_DELEGATION_PASSWORD}" -I "${IP_SERVER}" @@ -670,30 +657,26 @@ EchoRouge "Impossible de joindre le domaine." exit 1 fi - - # ceci est la suite du contournement. - # il faut tester la présence, et si elle manque ajouter l'entrée. - # en général dans les 20 secondes, le dns répond correctement ! - # https://dev-eole.ac-dijon.fr/issues/28675 local entreeDnsTrouvee=0 - for i in {1..10} + dns=( $(host "${AD_REALM}" | cut -d" " -f4) ) + for serveur in "${dns[@]}" do - if dig "${AD_HOST_NAME}.${AD_REALM}" | grep "${AD_HOST_IP}" + if host $AD_HOST_NAME.$AD_REALM ${serveur} | grep $AD_HOST_IP then - echo "Entrée DNS présente, Ok" entreeDnsTrouvee=1 - break - else - echo "Entrée DNS manquante, essai ${i} ..." - if ! samba-tool dns add "${AD_REALM}" "${AD_REALM}" "${AD_HOST_NAME}" A "${AD_HOST_IP}" -U"${AD_DELEGATION}%${AD_DELEGATION_PASSWORD}" - then - echo "Impossible d'inscrire l'entrée DNS" - else - echo "Entrée DNS inscrite" - fi fi - sleep 5 done + + if [ "$entreeDnsTrouvee" -eq 0 ]; then + net ads dns register "${AD_HOST_NAME}.${AD_REALM}" -U"${AD_DELEGATION}%${AD_DELEGATION_PASSWORD}" + for serveur in "${dns[@]}" + do + if host $AD_HOST_NAME.$AD_REALM ${serveur} | grep $AD_HOST_IP + then + entreeDnsTrouvee=1 + fi + done + fi if [ $entreeDnsTrouvee -eq 0 ] then EchoRouge "L'entrée DNS de la machine n'est pas inscrite."