1
BTS SIO
Services Informatiques aux Organisations
Option SISR
Session 2017
Nom et prénom
COULIBALY Edouard Fabrice
Activité professionnelle N° 1
NATURE DE L'ACTIVITE Création de l’environnement utilisateur par script à partir d’une feuille Excel Contexte Afin d’optimiser sa charge de travail et de répondre rapidement aux sollicitations
des responsables des ligues, il essaie d’automatiser au maximum certaines tâches administratives.
Objectifs La mission consiste à automatiser la création de l’environnement pour chaque utilisateur d’une ligue. Lors de l’installation d’une ligue, l’administrateur de la M2L communique un fichier Excel au responsable de la ligue, lui permettant par la suite d’organiser les utilisateurs, les ressources et de fixer les niveaux d’accès et les quotas sur disque dur.
Lieu de réalisation IFOPI
SOLUTIONS ENVISAGEABLES - Créer manuellement les utilisateurs ;
- Créer un modèle qui sera dupliqué à chaque utilisateur ; - Créer un script qui permettra d’automatiser cette tâche.
DESCRIPTION DE LA SOLUTION RETENUE
Conditions initiales Etant seul et par soucis de gain de temps, la solution retenue est celle de l’automatisation de la tâche via un script pour faciliter l’administration.
Conditions finales Création d’un script pour automatiser la création d’utilisateurs Outils utilisés Commandes DSADD
CONDITIONS DE REALISATION
Matériels Serveur Windows Server 2008R2 avec un Active Directory d’installé (domaine : m2l.fr)
Logiciels Système d’exploitation : Windows Server 2008R2 Outils : Bloc-notes, Microsoft Office Excel
Durée 5 heures
Contraintes Respect des exigences de l’infrastructure M2L
Un Active Directory disponible afin de vérifier la création des utilisateurs
COMPETENCES MISES EN OEUVRE POUR CETTE ACTIVITE PROFESSIONNELLE A1.2.2
A1.2.4 A1.3.1 A1.4.3 A3.3.1 A3.3.3 A3.3.4 A4.1.1
Rédaction des spécifications techniques de la solution retenue Détermination des tests nécessaires à la validation d’un service Test d’intégration et d’acceptation d’un service
Gestion des ressources
Administration sur site ou à distance des éléments d’un réseau, de serveurs.
Gestions des identités et des habilitations Automatisation des tâches d’administration Proposition d’une solution applicative
2
A4.1.9 Rédaction d’une documentation technique
DEROULEMENT DE L'ACTIVITE I- Création fichier Excel :
1) Sous Microsoft Excel, créer un tableau contenant différentes caractéristiques à appliquer à chaque utilisateur :
PRENOM, NOM, LOGIN, MOT DE PASSE, ACL, LIMITE QUOTA, SEUIL D’ALERTE, JOUR DE TRAVAIL, HORAIRE DE TRAVAIL
Il est important de noter les contraintes suivantes :
Le login sera généré à partir des nom et prénom de l’utilisateur, par une formule Excel. Il obéit à la syntaxe suivate : <premier caractère du prénom>.<nom>. Pour Sylvie Dupont, on obtiendra : s.dupont (tout en minuscule).
La formule utilisée pour le login est : =GAUCHE(Ax) &"."&Bx
=GAUCHE(A2) &"."&B2)
L’utiliser autant de fois que nécessaire en modifiant avec les bonnes colonnes et lignes.
Le mot de passe sera généré par une macro Excel, conformément à la stratégie de sécurité des mots de passe requise par le système d’exploitation. Il pourrait être modifié par l’utilisateur à la première ouverture de session. Il sera généré à partir d’une chaine de caractères composée de
:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 !?@. La longueur du mot de passe doit être supérieure à 10 caractères.
La macro nécessaire à la création du mot de passe est la suivante :
Sub mdp() Randomize
carac = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789-@_"
For j = 1 To 11 lettre_aleatoire = ""
For i = 1 To 10
nombre_aleatoire = Int(Len(carac) * Rnd) + 1
lettre_aleatoire = lettre_aleatoire & Mid(carac, nombre_aleatoire, 1) Next
Range("D" & j + 1).Select
3 Range("D" & j + 1).Value = lettre_aleatoire
Next End Sub
2) Enregistrer le document au format .csv avec séparateur point-virgule :
3) Créer un dossier à la racine du serveur sur lequel sera lancé le script et placer le fichier .csv dans ce dossier.
Dans notre cas, le dossier se nomme « ScriptsAD » et se trouve dans : « C:\ScriptsAD\LigueTennis.csv » II- Création du script batch
1) Ouvrir le Bloc-notes, copier le script suivant :
@echo off
set /p nomLigue=Entrez le nom de la ligue a creer : set chemin=C:\ScriptsAD
dir %chemin% | find ".csv"
set /p nomFichier=choisir le fichier texte dans cette liste : REM Lecture du fichier Excel
if not exist %chemin%\%nomFichier% goto errNoFile
if not exist c:\dossiers%nomLigue% mkdir c:\dossiers%nomLigue%
net share dossiers%nomLigue%=c:\dossiers%nomLigue%
REM Voici la structure de la feuille Excel :
Rem PRENOM, NOM, LOGIN, MOT DE PASSE, ACL NTFS, QUOTA DISQUE, SEUIL ALERTE, JOURS DE TRAVAIL, HORAIRES DE TRAVAIL
REM %%A contiendra le prénom de l'utilisateur REM %%B contiendra le nom de l'utilisateur
REM %%C contiendra le login de l'utilisateur généré par une formule Excel REM %%D contiendra le mot de passe de l'utilisateur généré par une macro Excel
REM %%E contiendra le nom du groupe d'appartenance de l'utilisateur (par défaut g suivi du nom de la ligue
4
REM %%E contiendra les permissions NTFS accordées à l'utilisateur sur le dossier : R (Read)=Lire, W(Write)=Ecrire, C(Change)=Modifier, F(Full)=Contrôle Total, etc.
REM %%F contiendra le quota fixé à l'utilisateur sur le disque dur REM %%G contiendra le seuil d'alerte sur les quotas
REM %%H contiendra les jours de travail pour l'utilisateur REM %%I contiendra les horaires de travail pour l'utilisateur DSADD ou "ou=Ligue %nomLigue%, dc=m2l, dc=fr"
DSADD group "CN=g%nomLigue%, OU=Ligue %nomLigue%,dc=m2l, dc=fr"
Rem skip permet d'ignorer la première ligne de la feuille Excel
FOR /F "skip=1 eol=! tokens=1,2,3,4,5,6,7,8,9,10,11,12,13 delims=; " %%A in (%chemin%\%nomFichier%) do ( DSADD user "CN="%%C",OU=Ligue %nomLigue%,dc=m2l, dc=fr" -fn %%A -ln %%B -pwd %%D -samid %%C - pwdneverexpires no -disabled no -memberof "CN=g%nomLigue%,OU=Ligue %nomLigue%, DC=m2l, DC=fr"
MKDIR c:\dossiers%nomLigue%\%%B.%%A
NET SHARE %%B.%%A=c:\dossiers%nomLigue%\%%B.%%A
REM CACLS c:\dossiers%nomLigue%\%%b.%%a /E /T /G %%C:%%E Administrateurs:F NET USER %%C /TIMES:%%H,%%I
REM FSUTIL quota modify c: %%F %%G %%C REM FSUTIL quota enforce c:
)
Echo La creation des utilisateurs de la ligue %nomLigue% s'est terminee correctement goto termine
:errNoFile
Echo Creation des utilisateurs de la ligue Ligue %nomLigue% car le fichier %chemin%\%nomFichier% est inaccessible !
:termine pause
Explication de certaines commandes :
- La commande "set" suivi de commutateur « /p » permet d’accepter une saisie de l'utilisateur comme valeur pour une variable. Le fichier batch attend que l'utilisateur entre une valeur après l'instruction.
- Créer une variable d’environnement indiquant le chemin du dossier où se trouve le fichier .csv La commande dir dossier find « .csv » permet d’effectuer une recherche de tous les fichiers ayant l’extension .txt à l’intérieur d’un dossier (afin de créer d’autres utilisateurs à partir d’un autre fichier, si nécessaire).
Ex : set chemin= C:\ScriptsAD\
dir %chemin% | find ".csv"
- Créer et partager les différents dossiers qui seront à la disposition des utilisateurs. Ces dossiers portent le nom de l’utilisateur :
Ex : MKDIR c:\dossiers%nomLigue%\%%B.%%A
NET SHARE %%B.%%A=c:\dossiers%nomLigue%\%%B.%%A
- Lire le fichier de données des utilisateurs ligne par ligne. Pour cela, créer une boucle qui fait appel au fichier texte. Chaque ligne contient 13 données délimitées par le séparateur « ; ». Il est donc nécessaire de récupérer ces données à l’aide de 13 Token. Le premier paramètre est %%a : prénom. Il faut mettre autant de Token que de colonnes dans le fichier Excel :
Ex: FOR /F "skip=1 eol=! tokens=1,2,3,4,5,6,7,8,9,10,11,12,13 delims=; " %%A in (%chemin%\%nomFichier%) do (
5
… )
- Créer une OU (Unité d’Organisation) :
DSADD ou "ou=Ligue %nomLigue%, dc=m2l, dc=fr"
- Créer un utilisateur avec ses caractéristiques :
DSADD user "CN="%%C", OU=Ligue %nomLigue%, dc=m2l, dc=fr" -fn %%A -ln %%B -pwd %%D -samid
%%C -pwdneverexpires no -disabled no -memberof "CN=g%nomLigue%, OU=Ligue %nomLigue%, DC=m2l, DC=fr"
- Attribuer les quotas et les limites sur le disque C:/ à chaque utilisateur à l’aide de la commande fsutil quota [modify] CheminVolume LimiteSeuil [Nom_Utilisateur] (avec le paramètre %%l : limite quota, le paramètre %%h : quota disque, le paramètre %%c : le login) :
REM FSUTIL quota modify c: %%F %%G %%C
- Activer les quotas à l’aide de la commande fsutil quota [enforce] CheminVolume : REM FSUTIL quota enforce c:
- Créer et partager le sous-dossier par utilisateur. Chaque dossier de l’utilisateur est nommé nom.prénom (avec le paramètre %%a : prénom, le paramètre %%b : nom) :
MKDIR c:\dossiers%nomLigue%\%%B.%%A
NET SHARE %%B.%%A=c:\dossiers%nomLigue%\%%B.%%A
- Gérer les droits d’accès aux différents dossiers (avec paramètre %%g : droit d’accès) : REM CACLS c:\dossiers%nomLigue%\%%b.%%a /E /T /G %%C:%%E Administrateurs:F
- Créer des jours et horaires d’ouverture de session autorisée (avec le paramètre %%i : jour d’accès autorisé sous forme J-J et le paramètre %%j : horaire d’accès autorisé sous le format HH :MM-HH :MM NET USER %%C /TIMES: %%H, %%I
- Fermeture de la boucle : )
- Afin que la fenêtre DOS ne se ferme pas à la fin de l’exécution du script, insérer la commande suivante:
PAUSE
2) Enregistrer au format .bat
3) Exécuter le fichier .bat en double-cliquant dessus :
Renseigner le nom de la ligue à créer et valider Entrée:
6
Choisir le fichier .csv voulu et valider Entrée:
Le script s’est bien exécuté :
7
4) Aller dans l’Active Directory, la ligue ainsi que ses utilisateurs devraient être créés :
CONCLUSION
L’écriture des scripts s’avère très utile pour automatiser certaines tâches d’administration de la M2L et des ligues.
Cette activité a permis de se familiariser avec l’administration des comptes utilisateurs sur Active Directory et avec les scripts, en explorant les principales commandes concernant l’administration des comptes utilisateurs.
Par cette activité, on apprend la gestion des ressources.
EVOLUTION POSSIBLE Il est possible d’envisager une évolution :
- Inclure un menu dans le batch (.bat) de base permettant à l’administrateur d’avoir accès à la liste des comptes client et de pouvoir les supprimer directement à partir de MSDOS
- Passage au script en Powershell (natif depuis Windows 7, Windows 2008 Server …)