Les scripts d'aide à l'administration

 

 

Windows 2000 est une bien belle interface graphique débordante d'outils de gestion, mais parfois trop rigide pour automatiser certaines tâches administratives telles que la création de répertoires personnels ou la surveillance de quota.

 

 

I - Création de dossiers personnels sous Windows 2000

A chaque utilisateur doit correspondre un dossier qu'il utilisera à des fins personnelles.
Seul l'utilisateur et l'administrateur ont accès à ce dossier qui est invisible pour les autres.
Tous les dossiers personnels sont regroupés sur une même machine dans un dossier racine appelé "Perso".
Pour l'utilisation, un script d'ouverture de session mappe un lecteur sur ce dossier pour chaque utilisateur (j'ai pris pour habitude d'utiliser la lettre P pour "Perso").

On crée donc un dossier ayant le nom d'ouverture de session de l'utilisateur avec un "$" ajouté en fin. Par exemple, pour un loggin rdupont, le dossier rdupont$ est créé avec les droits appropriés.

Nécessite les fonctions subinacl.exe et xcalcs.exe du Kit de ressources techniques de Microsoft.

Fichier CreePerso.bat

:: ===============================================
:: Script de création du répertoire perso.
:: Affecte aussi les droits d'accès.
::
:: ATTENTION : Ne fonctionne que sur la machine où créer les partages
::
:: UTILISATION : CreePerso nom_utilisateur
::
:: Il faut les fichiers subinacl.exe et xcacls.exe
:: du kit de ressources techniques
:: ===============================================
::
set domaine=NOMDUDOMAINE
set disk=d:
set chemin=%disk%\perso
echo off
cls
echo.
echo -----------------------------------------
echo Creation du dossier personnel utilisateur
echo -----------------------------------------
echo.
echo Cree le 9/10/2001 par Laurent
echo.V1.2 du 14/11/2001 par Laurent
echo.
echo.
::
if not "%1==" set user=%1
if "%1==" set /p user=Donner le nom de l'utilisateur :
::
echo.
if exist %chemin%\%user%\*.* goto USER_OK
echo -- Creation du dossier perso de %user%
MD %chemin%\%user%
::
::
echo -- Creation du nom de partage
echo.
if exist %serveur%\%user%$\*.* goto SHARE_OK
net share %user%$=%chemin%\%user% /UNLIMITED /CACHE:NO > nul
::
::
:SHARE_OK
echo -- Affectation des droits
echo.
::
:: Modification des permissions NTFS :
:: L'utilisateur a accès au partage
:: L'administrateur aussi
call subinacl /Share %user%$ /grant=%domaine%\%USER%=F
call subinacl /Share %user%$ /grant=%domaine%\administrateur=F
::
::
:: Affectation des droits pour l'utilisateur :
:: Ecriture/Lecture/Suppression (accès spécial)
call xcacls %chemin%\%user% /g %domaine%\%user%:RWED /E
::
:: Affectation des droits pour l'adminsitrateur : Contrôle total
call xcacls %chemin%\%user% /g administrateur:F /E
::
:: Compte "Utilisa. du domaine" : Controle total
call xcacls %chemin%\%user% /G "Utilisa. du domaine":F /E
::
:: Compte "Tout le monde" : Supprimer
call xcacls %chemin%\%user% /R "Tout le monde" /E
::
::
echo.
echo -- Process termine
echo.
GOTO FIN
:USER_OK
echo.
echo Un dossier de ce nom existe deja !
echo Verifiez le nom d'utilisateur.
echo.
::
:FIN

Télécharger CreePerso.bat

Lancé en mode commandes, ce script peut soit être invoqué avec en paramètre le nom à entrer, soit être lancé simplement (le nom est alors demandé).

 

II - Automatisation pour une liste d'utilisateurs

Si l'on dispose d'une liste d'utilisateurs pour lesquels créer le dossier personnel adéquat, voici un second script s'interfaçant avec le précédent.

Les utilisateurs à créer doivent être sous forme de liste simple contenue dans un fichier telle que :

nom1
nom2
nom3
nom4
...

Fichier MakeListPerso.bat

:: =================================================
:: Script de création de tous les répertoires perso.
:: d'utilisateurs contenus dans une liste.
:: Affecte aussi les droits d'accès.
::
:: Utilise le fichier DossierPerso.bat pour créer
:: et affecter les droits
::
:: ATTENTION : Ne fonctionne que sur la machine où créer les partages
::
:: UTILISATION : MakeListPerso nom_fichier
::
:: Il faut les fichiers subinacl.exe et xcacls.exe
:: du kit de ressources techniques
:: =================================================
::
echo off
cls
echo.
echo -----------------------------------------------------------------
echo Creation de tous les dossiers personnels de tous les utilisateurs
echo -----------------------------------------------------------------
echo.
echo cree le 10/10/2001 par Laurent
echo V1.2 du 14/11/2001 par Laurent
echo.
echo.
::
if EXIST %1 GOTO OK
echo.
echo Le fichier %1 est introuvable.
echo Le processus est arrete !
echo.
pause
::
GOTO FIN
:OK
FOR /F "tokens=1" %%A IN (%1) DO call CreePerso %%A
:FIN


Télécharger MakeListPerso.bat

 

III - Surveillance de quota sous Windows 2000

Windows 2000 prend en charge la gestion de quota mais uniquement sur la totalité d'un disque. Il n'est pas possible de gérer les quota sur un dossier.
Voici donc un petit script en mode commandes qui permet de recueillir les informations de quota des dossiers perso précédemment créés.
A chaque lancement du script, chacun des dossier est testé sur sa taille.
Il y a création d'un fichier de log dans lequel apparaît la date et l'heure du process ainsi que la liste des dossiers qui dépassent le quota défini.

Le script peut être exécuté aussi souvent que nécessaire.

Nécessite la fonction diruse.exe du Kit de ressources techniques de Microsoft.

Fichier Quota.bat

:: =============================================
:: Script de getsion de quota par dossier perso.
::
:: ATTENTION : Ne fonctionne que sur la machine
:: où gérer les dossiers
::
::
:: UTILISATION : Quota
::
:: Il faut le fichier diruse.exe
:: du kit de ressources techniques
:: =============================================
::
::
:: Si un paramètre est passé, la fonction n'affiche pas la pause en fin de traitement
:: Le quota en MO
set max=50
::
set Fichtmp=%TMP%\~quota.tmp
set lect=d:
set chemin=perso
set pathlog=c:\log
set fichlog=Quota.log
set Version=V1.20
set Reptravail=c:\Rkit
::
::
echo off
cls
echo.
echo ----------------
echo Gestion de quota
echo ----------------
echo.
echo Cree le 24/10/2001 par Laurent
echo.%Version% du 14/11/2001 par Laurent
echo.
echo.
echo.
::
::
if not exist %pathlog% md %pathlog%
if exist %Pathlog%\%fichlog% GOTO FileOK
echo Surveillance des quota %VERSION% par Laurent BONNIN >> %Pathlog%\%fichlog%
echo ----------------------------------------------- >> %Pathlog%\%fichlog%
echo. >> %Pathlog%\%fichlog%
echo. >> %Pathlog%\%fichlog%

:FILEOK
echo -- Etablissement de la liste des dossiers personnels
echo.
dir %lect%\%chemin%\*.* /A:D /OGN /B > %Fichtmp%
::
::
echo Verification des quota du %DATE% a %TIME% >> %Pathlog%\%fichlog%
::
::
echo -- Verification des quota (max. %max% MO)
echo.
::FOR /F "tokens=1" %%A IN (%Fichtmp%) DO call :BOUCLE %%A
FOR /F "tokens=1" %%A IN (%Fichtmp%) DO (
set Qui=%%A
%Reptravail%\diruse /D /M /Q:%max% %lect%\%chemin%\%%A
if errorlevel 1 call :DISPLAY )
::
echo. >> %Pathlog%\%fichlog%
echo Fin du traitement a %TIME% >> %Pathlog%\%fichlog%
echo. >> %Pathlog%\%fichlog%
echo. >> %Pathlog%\%fichlog%
::
if exist %Fichtmp% del %Fichtmp%
::
echo.
echo.
echo Les resultats de la verification sont dans %Pathlog%\%Fichlog%.
echo.
if "%1==" pause
GOTO FIN

:DISPLAY
echo %DATE% %Qui% depasse le quota !
echo [%Qui%] depasse le quota (%max% MO) ! >> %Pathlog%\%Fichlog%
GOTO :EOF

:FIN

Télécharger Quota.bat

Ce script sous-entend les conditions suivantes :

 

IV - Planification de l'exécution du script

Il peut être judicieux de planifier l'exécution de ce script afin de générer un rapport journalier des dosseirs en dépassement de quota. Il faut donc utiliser la commande AT (intégrée à Windows 2000).
Dans l'exemple suivant, la surveillance est effectuée tous les jours à 6h00.

AT 6:00 /INTERACTIVE /EVERY:l,ma,me,j,v,s,d C:\RKIT\Quota.bat param

param ne correspond à rien, c'est juste un paramètre passé à la fonction Quota afin que la fenêtre de travail se ferme en fin de traitement.

Il est conseillé de mettre cette commande dans un fichier Batch ce qui permet d'effectuer très simplement la programmation des tâches si une réinitialisation de la commande AT devait être effectuée (à l'aide de la commande AT /DELETE).

 

 

 

Début de page  | Page d'accueil  |  Me contacter

(C) Laurent - autourdupc.com -  

Création le 27 octobre 2001.
Mise à jour le 27 juin 2002.