[TUTO] - [Batch Dos] Script changement de mot de passe AD

Script changement de mot de passe AD [TUTO] - [Batch Dos] - Shell/Batch - Programmation

Marsh Posté le 09-10-2008 à 16:26:54    

Script changement de mot de passe à J+3 avec envois de mail informatif.
 
 
 
Avant toutes choses, je tiens a remercier Laurent Dardenne et magma² (www.developpez.com)pour leur aide.
 
 
Pré-requis :
 
Le script et tous les fichiers annexes sont sur le serveur AD.
 
- Ficher dico.txt contenant un mot par ligne (dans mon exemple il y a 121 lignes).
- Fichier listusers.csv,  contenant le nom d’utilisateur, son adresse mail et éventuellement des adresses mails complémentaires (chef d’équipes ou autre, histoire de les tenir informés).
- Le programme blat (http://www.blat.net/) installé et paramétré sur le serveur AD.
- Les fichiers mail1.txt et mail2.txt qui vont nous permettre d’envoyer un mail automatiquement avec le mot de passe de l’utilisateur ainsi que la date effective du remplacement.
 
Exemple de fichier dico.txt :

Code :
  1. abri
  2. amen
  3. anne
  4. avec
  5. azur
  6. base
  7. bete
  8. bise
  9. bleu
  10. bloc


Exemple de fichier listusers.csv :

Code :
  1. totoMAG01;toto1@tototo.fr;Directeur1@toto.fr
  2. totoMAG02;toto2@tototo.fr;Directeur2@toto.fr
  3. totoMAG03;toto3@tototo.fr;Directeur3@toto.fr
  4. totoMAG04;toto4@tototo.fr;Directeur4@toto.fr
  5. tataMAG01;riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr;Directeur1@toto.fr
  6. tataMAG02;riri2@toto.fr,fifi2@toto.fr,loulou2@toto.fr;Directeur2@toto.fr
  7. tataMAG03;riri3@toto.fr,fifi3@toto.fr,loulou3@toto.fr;Directeur3@toto.fr
  8. tataMAG04;riri4@toto.fr,fifi4@toto.fr,loulou4@toto.fr;Directeur4@toto.fr


 
Exemple mail1.txt :

Code :
  1. Ceci est un mail automatique merci de ne pas y répondre.


 
Exemple mail2.txt :

Code :
  1. Cordialement .
  2. Le service Informatique.


 
1er script chgmt-pwd-ad.bat :

Code :
  1. @echo off
  2. REM ---------------------------------------------------------------------------
  3. REM DEFINTION DU MOT DE PASSE
  4. REM ---------------------------------------------------------------------------
  5. set /a haz1=%random%%%120+1
  6. set /a haz2=%random%%%120+1
  7. set /a chi=%random%%%10
  8. set LineNo1=%haz1%
  9. set LineNo2=%haz2%
  10. set "mot1="
  11. set "mot2="
  12. set /a LineNo1-=1
  13. set /a LineNo2-=1
  14. for /f "delims=" %%a in ('more/e +%LineNo1% ^< dico.txt') do (
  15.   if not defined mot1 set "mot1=%%a"
  16. )
  17. for /f "delims=" %%b in ('more/e +%LineNo2% ^< dico.txt') do (
  18.   if not defined mot2 set "mot2=%%b"
  19. )
  20. REM ---------------------------------------------------------------------------
  21. REM DEFINITION DE JOUR D'EXECUTION J+3
  22. REM ---------------------------------------------------------------------------
  23. @echo off
  24. set /a NJ=3
  25. set /a J=1%DATE:~0,2% - 100
  26. set /a M=1%DATE:~3,2% - 100
  27. set /a A=%DATE:~6,4%
  28. set /a JJ=%NJ% + ((1461 * (%A% + 4800 + (%M% - 14) / 12)) / 4 + (367 * (%M% - 2 - 12 * ((%M% - 14) / 12))) / 12 - (3 * ((%A% + 4900 + (%M% - 14) / 12) / 100)) / 4 + %J% - 32075)
  29. set /a T0=%JJ% + 68569
  30. set /a T1=(4 * %T0%) / 146097
  31. set /a T0=%T0% - (146097 * %T1% + 3) / 4
  32. set /a T2=(4000 * (%T0% + 1)) / 1461001
  33. set /a T0=%T0% - (1461 * %T2%) / 4 + 31
  34. set /a T3=(80 * %T0%) / 2447
  35. set /a J=%T0% - (2447 * %T3%) / 80
  36. set /a M=%T3% + 2 - (12 * (%T3% / 11))
  37. set /a A=100 * (%T1% - 49) + %T2% + (%T3% / 11)
  38. if %J% LSS 10 set J=0%J%
  39. if %M% LSS 10 set M=0%M%
  40. echo.
  41. echo Dans 3 jours nous serons le %J%/%M%/%A%
  42. echo.
  43. REM ---------------------------------------------------------------------------
  44. REM GENERATION DU MAIL
  45. REM ---------------------------------------------------------------------------
  46. echo Traitement de %user%
  47. type mail1.txt  >  tmp/mailenv%user%.txt
  48. echo Votre mot de passe sera changé le %J%/%M%/%A%  >>  tmp/mailenv%user%.txt
  49. echo.  >>  tmp/mailenv%user%.txt
  50. echo Le nouveau mot de passe de %user% sera : %mot1%%chi%%mot2%  >>  tmp/mailenv%user%.txt
  51. type mail2.txt  >>  tmp/mailenv%user%.txt
  52. REM ---------------------------------------------------------------------------
  53. REM GENERATION LISTE DE MOT DE PASSE
  54. REM ---------------------------------------------------------------------------
  55. echo Utilisateur %user% Mot de passe %mot1%%chi%%mot2% >> list-password.txt
  56. REM ---------------------------------------------------------------------------
  57. REM GENERATION ENVOIS DES MAILS
  58. REM ---------------------------------------------------------------------------
  59. echo blat tmp\mailenv%user%.txt -t %destinataire% -c %copiecarbone% -s "Changement de mot de passe" >> envoi-mail-prev.cmd
  60. REM ---------------------------------------------------------------------------
  61. REM GENERATION SCRIPT CHANGEMENT MOT DE PASSE
  62. REM ---------------------------------------------------------------------------
  63. echo NET USER %user% %mot1%%chi%%mot2% /DOMAIN  >>  modif-password-ad.cmd


 
2éme script L_chgmt-pwd-ad.bat :

Code :
  1. REM ---------------------------------------------------------------------------
  2. REM INITIALISATION DES SCRIPTS A LANCER
  3. REM ---------------------------------------------------------------------------
  4. @echo off > envoi-mail-prev.cmd
  5. @echo off > modif-password-ad.cmd
  6. echo ---------------------------------------------------------------------------
  7. echo ---------------------------------------------------------------------------
  8. echo %date% %time%
  9. echo ---------------------------------------------------------------------------
  10. echo ---------------------------------------------------------------------------
  11. REM ---------------------------------------------------------------------------
  12. REM MAJ DU FICHIER DE MOT DE PASSE POUR LES EQUIPES SUPPORT
  13. REM ---------------------------------------------------------------------------
  14. @echo blat list-password.txt -t admtech@domain.com -s "Liste des nouveaux mots de passe utilisateurs (dans 3 jours)" > envoi-list-admtech.cmd
  15. del list-password.txt
  16. del tmp\mailenv*.txt
  17. REM ---------------------------------------------------------------------------
  18. REM TRAITEMENT POUR CHAQUE UTILISATEUR DEFINI DANS LE FICHIER CSV
  19. REM ---------------------------------------------------------------------------
  20. for /F "tokens=1-3 delims=;" %%i in (listusers.csv) do (
  21. set user=%%i
  22. set destinataire=%%j
  23. set copiecarbone=%%k
  24. )& call chgmt-pwd-ad.bat
  25. @echo on
  26. REM ---------------------------------------------------------------------------
  27. REM PLANIFICATION DU SCRIPT DE CHANGEMENT DE MOT DE PASSE DANS 3 JOURS
  28. REM ---------------------------------------------------------------------------
  29. schtasks /delete /tn modif-password-ad /F
  30. schtasks /create /tn modif-password-ad /tr %cd%\modif-password-ad.cmd /sc once /sd %J%/%M%/%A% /st 00:01:00 /ru DOMAIN\administrateur /rp password
  31. REM ---------------------------------------------------------------------------
  32. REM ENVOI DU MAIL A CHAQUE UTILISATEUR POUR LUI DONNER SON NOUVEAU MPD
  33. REM ---------------------------------------------------------------------------
  34. call envoi-mail-prev.cmd
  35. type envoi-mail-prev.cmd
  36. del  envoi-mail-prev.cmd
  37. REM ---------------------------------------------------------------------------
  38. REM ENVOI DU FICHIER DE MOT DE PASSE AUX EQUIPES SUPPORT
  39. REM ---------------------------------------------------------------------------
  40. call envoi-list-admtech.cmd
  41. type envoi-list-admtech.cmd
  42. del  envoi-list-admtech.cmd


Message édité par dob2806 le 09-10-2008 à 16:34:13
Reply

Marsh Posté le 09-10-2008 à 16:26:54   

Reply

Marsh Posté le 10-10-2008 à 17:03:05    

Il me semble que tu t'es donné bien de la peine pour faire un truc sensé ajouter de la sécurité, mais qu'au final tu affaiblis considérablement ton système (mots de passe qui circulent en clair sur le réseau et dans des fichier temporaires, mots de passes extrèmement faibles...)

Reply

Marsh Posté le 10-10-2008 à 22:07:48    

parce que des mots de passe de 9 caracteres + des chiffres se sont des mots de passe faibles ? le dico n'est la que pour l'exemple rien ne t'empeche de mettre des mots plus long avec ou sans majuscule et autres caracteres speciaux !!!


Message édité par dob2806 le 10-10-2008 à 22:09:06
Reply

Marsh Posté le 11-10-2008 à 10:59:28    

Y'avait il une contrainte précise pour utiliser le batch dos?
Parce que pour faire quelque chose d'efficace, lisible et maintenable, il vaut mieux installer un vrai langage de script sur ton ordi (par exemple perl), prévu pour faire ce genre de choses, et evitant de creer tout un tas de fichiers externes ou d'appeller des programmes externes.
A+,


Message édité par gilou le 11-10-2008 à 11:03:22

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-10-2008 à 14:44:59    

Oui bien entendu, la contrainte etait que se soit un batch sous DOS, sinon cela n'aurait pas été marrant...

Reply

Marsh Posté le 13-10-2008 à 14:47:57    

Question: y'avait il une contrainte precise pour que se soit un batch sous DOS
Réponse: la contrainte etait que se soit un batch sous DOS
Merci pour cette reponse a la clarté éblouissante [:micj]  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-10-2008 à 20:48:37    

pas de quoi j'aime etre clair net et precis  :lol:  :lol:  :lol:

Reply

Marsh Posté le 15-10-2008 à 16:11:23    

a priori il s'agit de modifier le mot de passe windows, il me semble qu'il y a un paramètre pour forcer l'expiration de celui ci après quelques temps tout en restant confidentiel.
Et comment faire pour récupérer son nouveau pass si on peut plus se logguer après 3 semaines de vacances pour lire ses mails ?


Message édité par djobidjoba le 15-10-2008 à 16:13:07
Reply

Marsh Posté le 15-10-2008 à 18:10:58    

Le mot de passe n'expire pas. Simplement au prochain login, le système te demande de changer ton mot de passe.

Reply

Marsh Posté le 15-10-2008 à 18:41:43    

il ne demande pas de changer son mot de passe il force le changement de celui ci, ici cela s'applique dans une entreprise et pas chez un particulier.

Reply

Marsh Posté le 15-10-2008 à 18:41:43   

Reply

Marsh Posté le 15-10-2008 à 18:50:26    

:heink: J'ai bien compris, mais je répond à djobidjoba

Reply

Marsh Posté le 15-10-2008 à 21:21:29    

moi aussi je lui repondais  :D  :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed