Script changement de mot de passe à J+3 avec envois de mail informatif.



Avant toutes choses, je tiens a remercier Laurent Dardenne et magma² pour leur aide.

En gros on planifie ce script L_chgmt-pwd-ad.bat chaque debut de mois/trimestre et il se charge d'envoyer un mail aux utilisateurs concernés informant du changement de mot de passe dans 3 jours en incluant le mot de passe dans le mail.

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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
abri
amen
anne
avec
azur
base
bete
bise
bleu
bloc
…
Exemple de fichier listusers.csv :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
totoMAG01;toto1@tototo.fr;Directeur1@toto.fr
totoMAG02;toto2@tototo.fr;Directeur2@toto.fr
totoMAG03;toto3@tototo.fr;Directeur3@toto.fr
totoMAG04;toto4@tototo.fr;Directeur4@toto.fr
tataMAG01;riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr;Directeur1@toto.fr
tataMAG02;riri2@toto.fr,fifi2@toto.fr,loulou2@toto.fr;Directeur2@toto.fr
tataMAG03;riri3@toto.fr,fifi3@toto.fr,loulou3@toto.fr;Directeur3@toto.fr
tataMAG04;riri4@toto.fr,fifi4@toto.fr,loulou4@toto.fr;Directeur4@toto.fr
Exemple mail1.txt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Ceci est un mail automatique merci de ne pas y répondre.
Exemple mail2.txt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Cordialement .

Le service Informatique.
1er script chgmt-pwd-ad.bat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
@echo off 

REM ------------------------------------------------------------------------------------
REM DEFINTION DU MOT DE PASSE
REM ------------------------------------------------------------------------------------

set /a haz1=%random%%%120+1
set /a haz2=%random%%%120+1
set /a chi=%random%%%10
set LineNo1=%haz1%
set LineNo2=%haz2%
set "mot1="
set "mot2="
set /a LineNo1-=1
set /a LineNo2-=1
for /f "delims=" %%a in ('more/e +%LineNo1% ^< dico.txt') do (
  if not defined mot1 set "mot1=%%a"
)
for /f "delims=" %%b in ('more/e +%LineNo2% ^< dico.txt') do (
  if not defined mot2 set "mot2=%%b"
)

REM ------------------------------------------------------------------------------------
REM DEFINITION DE JOUR D'EXECUTION J+3
REM ------------------------------------------------------------------------------------

@echo off

set /a NJ=3
set /a J=1%DATE:~0,2% - 100
set /a M=1%DATE:~3,2% - 100
set /a A=%DATE:~6,4%
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)
set /a T0=%JJ% + 68569
set /a T1=(4 * %T0%) / 146097
set /a T0=%T0% - (146097 * %T1% + 3) / 4
set /a T2=(4000 * (%T0% + 1)) / 1461001
set /a T0=%T0% - (1461 * %T2%) / 4 + 31
set /a T3=(80 * %T0%) / 2447
set /a J=%T0% - (2447 * %T3%) / 80
set /a M=%T3% + 2 - (12 * (%T3% / 11))
set /a A=100 * (%T1% - 49) + %T2% + (%T3% / 11)

if %J% LSS 10 set J=0%J%
if %M% LSS 10 set M=0%M%

echo.
echo Dans 3 jours nous serons le %J%/%M%/%A%
echo.

REM ------------------------------------------------------------------------------------
REM GENERATION DU MAIL
REM ------------------------------------------------------------------------------------

echo Traitement de %user%
type mail1.txt  >  tmp/mailenv%user%.txt
echo Votre mot de passe sera changé le %J%/%M%/%A%  >>  tmp/mailenv%user%.txt
echo.  >>  tmp/mailenv%user%.txt
echo Le nouveau mot de passe de %user% sera : %mot1%%chi%%mot2%  >>  tmp/mailenv%user%.txt
type mail2.txt  >>  tmp/mailenv%user%.txt


REM ------------------------------------------------------------------------------------
REM GENERATION LISTE DE MOT DE PASSE
REM ------------------------------------------------------------------------------------

echo Utilisateur %user% Mot de passe %mot1%%chi%%mot2% >> list-password.txt

REM ------------------------------------------------------------------------------------
REM GENERATION ENVOIS DES MAILS
REM ------------------------------------------------------------------------------------

echo blat tmp\mailenv%user%.txt -t %destinataire% -c %copiecarbone% -s "Changement de mot de passe" >> envoi-mail-prev.cmd

REM ------------------------------------------------------------------------------------
REM GENERATION SCRIPT CHANGEMENT MOT DE PASSE
REM ------------------------------------------------------------------------------------

echo NET USER %user% %mot1%%chi%%mot2% /DOMAIN  >>  modif-password-ad.cmd
2éme script L_chgmt-pwd-ad.bat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
REM ------------------------------------------------------------------------------------
REM INITIALISATION DES SCRIPTS A LANCER
REM ------------------------------------------------------------------------------------

@echo off > envoi-mail-prev.cmd
@echo off > modif-password-ad.cmd

echo ------------------------------------------------------------------------------------
echo ------------------------------------------------------------------------------------
echo %date% %time%
echo ------------------------------------------------------------------------------------
echo ------------------------------------------------------------------------------------

REM ------------------------------------------------------------------------------------
REM MAJ DU FICHIER DE MOT DE PASSE POUR LES EQUIPES SUPPORT
REM ------------------------------------------------------------------------------------

@echo blat list-password.txt -t admtech@domain.com -s "Liste des nouveaux mots de passe utilisateurs (dans 3 jours)" > envoi-list-admtech.cmd
del list-password.txt
del tmp\mailenv*.txt

REM ------------------------------------------------------------------------------------
REM TRAITEMENT POUR CHAQUE UTILISATEUR DEFINI DANS LE FICHIER CSV
REM ------------------------------------------------------------------------------------

for /F "tokens=1-3 delims=;" %%i in (listusers.csv) do (
set user=%%i
set destinataire=%%j
set copiecarbone=%%k
)& call chgmt-pwd-ad.bat
@echo on

REM ------------------------------------------------------------------------------------
REM PLANIFICATION DU SCRIPT DE CHANGEMENT DE MOT DE PASSE DANS 3 JOURS
REM ------------------------------------------------------------------------------------

schtasks /delete /tn modif-password-ad /F
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

REM ------------------------------------------------------------------------------------
REM ENVOI DU MAIL A CHAQUE UTILISATEUR POUR LUI DONNER SON NOUVEAU MOT DE PASSE
REM ------------------------------------------------------------------------------------

call envoi-mail-prev.cmd
type envoi-mail-prev.cmd
del  envoi-mail-prev.cmd

REM ------------------------------------------------------------------------------------
REM ENVOI DU FICHIER DE MOT DE PASSE AUX EQUIPES SUPPORT
REM ------------------------------------------------------------------------------------

call envoi-list-admtech.cmd
type envoi-list-admtech.cmd
del  envoi-list-admtech.cmd

Voila, voila, chez moi ça fonctionne le scipt à été lancé cette nuit .

Pour toutes questions ou amelioration eventuelle n'hesitez pas. et encore merci à Laurent Dardenne et magma².