Atelier : Création d'un
outil d'administration.


Objectif de l'atelier.

Le but est de recréer un outils d'administration qui permette de gérer les utilisateurs (création, suppression). L'avantage par rapport à l'outil intégré dans Windows est qu'on peut facilement l'adapter à nos besoins pour créer en un clin d'oeil, par exemple, des milliers d'utilisateurs.


1
Préparation de l'environnement de travail.
2
Création du script pour récupérer
la liste des utilisateurs et des groupes existants.

comptes d'utilisateurs de \\THUNDERBIRD1400

-------------------------------------------------------------------------------
Administrateur           HelpAssistant                  Invité
Sébastien PASTORE        SUPPORT_388945a0
La commande s'est terminée correctement.

Information sur... Les commandes pour travailler sur un domaine.

Si on travaille sur un domaine, les commandes deviennent :

Net user /domain > user.txt
Net group /domain > groups.txt


3

Création du code Visual Basic pour récupérer la liste
des utilisateurs et des groupes dans des zones de liste.


  • Créez l'interface comme représentée ci-contre. Nommez vos contrôles :
    • CmdMAJListes pour le bouton de commande qui va servir à remplir les listes
    • LstUsers pour la zone de liste qui contiendra les utilisateurs
    • LstGroups pour la zone de liste qui contiendra la liste des groupes locaux.

Rappel sur... Les instructions pour manipuler fichiers et chaînes.

Pour écrire l'algorithme précédent, vous aurez besoin des commandes et structures algorithmiques suivantes (à adapter à vos besoins) :

  • Pour ouvrir un fichier en lecture et parcourir tout son contenu :
      Dim f As Integer , s As String
      f = freefile
      Open "Scripts\users.txt" For Input As f
      While not eof(f)
        Line Input #f, s
    (lit la ligne courante et met le résultat dans s)
      Wend
      Close f


  • Pour voir si une chaîne s contient le texte "La commande" :
      If Instr(1, s, "La commande") > 0 Then ...

  • Pour extraire le nom de chacun des trois utilisateurs, dans la chaîne s :
      user1 = Mid$(s, position du premier caractère, nombre de caractères à extraire)

  • Pour supprimer les espaces superflus à droite du nom de l'utilisateur :
      user1 = Trim$(user1)

  • Pour rajouter le nom de l'utilisateur dans une zone de liste :
      LstUsers.AddItem user1
4
Taper le script MS-DOS pour créer un utilisateur.

Remarque sur... Les possibilités offertes par les commandes MS-DOS.

Le script utilisé sur le réseau DLM38038 utilise les commandes MS-DOS de façon plus poussée. Voici le script de création d'élèves sur 1lm38038, commenté :

Commande MS-DOS Commentaire
Mkdir d:\utilisateur\%1 Crée le répertoire de travail de l'élève, sur le serveur.
Net share %1=d:\utilisateurs\%1 /y Partage le répertoire de travail, afin de pouvoir y accéder à partir de n'importe quel poste (en passant par \\1lm38038\login).
Net user %1 %1 /add /domain /profilepath:"\\1lm38038\profils\%1" /scriptpath="script.bat" /homedir:"\\1lm38038\%1" Crée le compte d'utilisateur pour l'élève, avec son mot de passe, son répertoire de profil, son script d'ouverture de session, un lecteur vers son répertoire de travail.
Net group Eleves %1 /add /domain Ajoute cet élève au groupe d'utilisateurs Eleves.
Cacls d:\utilisateurs\%1 /e /r administrateurs "Admins du domaine" Supprime les droits d'accès existants sur le répertoire de travail.
Cacls d:\utilisateurs\%1 /e /p administrateur:f %1:c Crée de nouveaux droits sur le répertoire de travail, pour l'administrateur (contrôle total : f) et pour l'élève (droit de modification : c).

5
Intégrer la création d'un utilisateur
dans l'interface de Visual Basic.
6
Taper le script MS-DOS pour supprimer un utilisateur.

Remarque sur... Les possibilités offertes par les commandes MS-DOS.

Voici le script de suppression d'élèves utilisé sur le serveur 1lm38038, commenté :

Commande MS-DOS Commentaire
Rmdir d:\utilisateurs\%1 /s /q Supprime le répertoire de travail de l'élève.
Net share %1 /delete Supprime le partage du répertoire de travail (supprimer un répertoire avec rmdir ne supprime pas les partages qui vont avec).
Net user %1 /delete Supprime le compte d'utilisateur.

7
Intégrer la suppression d'un utilisateur
dans l'interface de Visual Basic.
8
Liste des améliorations possibles.

Faciles
  • De la même façon que les utilisateurs, on peut créer et supprimer des groupes.

  • On peut créer les utilisateurs "par lot", c'est à dire créer en un seul clic tous les comptes d'utilisateurs dont le nom est stocké dans un fichier texte.

  • Lorsqu'on crée un utilisateur, on crée son répertoire de travail, on le partage, on lui affecte des permissions (inspirez-vous des scripts du 1lm38038 pour ça).
Moyennes
  • Au démarrage de l'application, les scripts s'exécutent automatiquement et les listes se remplient, sans intervention de l'utilisateur.

  • On peut supprimer plusieurs utilisateurs d'un coup (cela nécessite de transformer la liste des utilisateurs en liste à sélection multiple, et d'ajuster le code Visual Basic en conséquent) ;

  • Lorsqu'on crée un utilisateur, on a la possibilité de choisir le(s) groupe(s) au(x)quel(s) il va appartenir.

  • Pour rendre cet outil utilisable sur n'importe quel serveur :
    • possibilité de paramétrer le nom du domaine sur lequel on travaille.
    • possibilité de paramétrer le chemin où se trouvent les répertoires de travail, les profils, etc.
Difficiles
  • Possibilité de créer des profils types d'utilisateurs (exemple : un profil prof, un profil élève). Lorsqu'on crée ensuite un nouvel utilisateur, on indique à quel profil il appartient.

  • Affichage du maximum d'informations sur l'utilisateur (date de la dernière connexion, taille du répertoire de travail, etc.)

Sébastien PASTORE.