Extension d'un réseau géré par GestRP (Gagny)

Introduction :

Il s'agit tout simplement de réunir trois extensions du réseau pédagogique :

Définition des ressources :

Pour gérer toutes ces ressources, nous alons utiliser un fichier ini de définition. Chaque ressource est définie par son serveur, le disque serveur, le nom de dossier, le nom de partage.

Rsrc_ext.ini

srvlog=srv-etk-2003
drivelog=d
dirlog=log
sharelog=log$
srvprofs=srv-etk-2003
driveprofs=d
dirprofs=profs
shareprofs=profs
srvtrav_disc=srv-etk-2003
drivetrav_disc=d
dirtrav_disc=trav_disc
sharetrav_disc=trav_disc
srvmes_classes=srv-etk-2003
drivemes_classes=d
dirmes_classes=mes_classes
sharemes_classes=mes_classes

Voilà, cela définit les zones log, trav_disc, profs, mes_classes.

Création des ressources :

ext_prep.bat

for /f "tokens=1,2 delims==" %%i in (extgestrp.ini) do set %%i=%%j

REM Preparation de la zone des logs
REM création du répertoire
MD \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%
MD \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\PC
MD \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\Utilisateurs
REM création du partage et des autorisations du partage
RMTSHARE \\%SRVLOG%\%SHARELOG%=%DRIVELOG%:\%DIRLOG% /UNLIMITED /REMARK:"zone des logs (%DATE%)" /GRANT administrateurs:F /GRANT utilisateurs:C

REM Definition des droits à la racine du partage
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG% -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:read_ex";M:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG% -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:add_file";i:np,sc;m:grant"

SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG% -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:add_subdir";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG% -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_attr";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG% -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_ea";i:so,io;m:grant"

SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\PC -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:add_subdir";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\PC -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_attr";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\PC -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_ea";i:so,io;m:grant"

SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\Utilisateurs -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:add_subdir";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\Utilisateurs -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_attr";i:so,io;m:grant"
SetAcl -on \\%SRVLOG%\%DRIVELOG%$\%DIRLOG%\Utilisateurs -ot file -actn ace -ace "n:%USERDOMAIN%\utilisa. du domaine;p:write_ea";i:so,io;m:grant"

REM Zone travail pour tous les enseignants
MD \\%SRVPROFS%\%DRIVEPROFS%$\%DIRPROFS%
REM création du partage et des autorisations du partage
RMTSHARE \\%SRVPROFS%\%SHAREPROFS%=%DRIVEPROFS%:\%DIRPROFS% /UNLIMITED /REMARK:"zone pour tous les enseignants (%DATE%)" /GRANT administrateurs:F /GRANT lesprofesseurs:C

REM Definition des droits à la racine du partage
SetAcl -on \\%SRVPROFS%\%DRIVEPROFS%$\%DIRPROFS% -ot file -actn ace -ace "n:%USERDOMAIN%\lesprofesseurs;p:change";m:grant"

REM zone trav_disc
MD \\%SRVTRAV_DISC%\%DRIVETRAV_DISC%$\%DIRTRAV_DISC%
REM création du partage et des autorisations du partage
RMTSHARE \\%SRVTRAV_DISC%\%SHARETRAV_DISC%=%DRIVETRAV_DISC%:\%DIRTRAV_DISC% /UNLIMITED /REMARK:"zone pour les disciplines des enseignants (%DATE%)" /GRANT administrateurs:F /GRANT lesprofesseurs:C

REM Definition des droits à la racine du partage
SetAcl -on \\%SRVTRAV_DISC%\%DRIVETRAV_DISC%$\%DIRTRAV_DISC% -ot file -actn ace -ace "n:%USERDOMAIN%\lesprofesseurs;p:read_ex";m:grant"

REM zone mes_classes
MD \\%SRVMES_CLASSES%\%DRIVEMES_CLASSES%$\%DIRMES_CLASSES%
REM création du partage et des autorisations du partage
RMTSHARE \\%SRVMES_CLASSES%\%SHAREMES_CLASSES%=%DRIVEMES_CLASSES%:\%DIRMES_CLASSES% /UNLIMITED /REMARK:"zone mes classes (%DATE%)" /GRANT administrateurs:F /GRANT lesprofesseurs:R

REM Definition des droits à la racine du partage
SetAcl -on \\%SRVMES_CLASSES%\%DRIVEMES_CLASSES%$\%DIRMES_CLASSES% -ot file -actn ace -ace "n:%USERDOMAIN%\lesprofesseurs;p:read_ex";m:grant"

Création des ressources individuelles :

Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2, ForAppending = 8

' Lecture du fichier de configuration Rsrc.ini
Set FileConf = objFSO.OpenTextFile ("Rsrc.ini", ForReading)
Do Until FileConf.AtEndOfStream
strNextLine = FileConf.Readline
if strNextLine <> "" then
variable = Split(strNextLine , "=")
Execute variable(0)&"=variable(1)"
end if
Loop
'Lecture du fichier de conf Rscr_ext.ini
Set FileConf = objFSO.OpenTextFile ("extgestrp.ini", ForReading)
Do Until FileConf.AtEndOfStream
strNextLine = FileConf.Readline
if strNextLine <> "" then
variable = Split(strNextLine , "=")
Execute variable(0)&"=variable(1)"
end if
Loop

const strClasses="mesclasses.txt" ' le fichier d'entrée

' les différentes ressources
strDepose="\\"&servdepo&"\"&dosdepo&"\"
strEnonce="\\"&servenon&"\"&dosenon&"\"
strZoneEleves="\\"&servgest&"\"&dosgest&"\"
strMesClasses="\\"&srvMes_Classes&"\"&shareMes_Classes&"\" ' la zone mes classes

' Pour info :
wscript.echo "Mes classes : "&strMesClasses &" / Depose : "& strDepose &" / Enonce : "& strEnonce &" / Zone eleves : "& strZoneEleves
Set objFoldermesClasses = objFSO.GetFolder(strMesClasses)
Set objTextFile = objFSO.OpenTextFile(strClasses, ForReading)

' création de la zone mes _classes
wscript.echo "Traitement de :"
Do While objTextFile.AtEndOfStream <> True
arrCol = split(objTextFile.Readline, ";")
prof=arrCol(0)
nbClasses=Ubound(arrCol,1)
Wscript.echo prof&" "&nbClasses&" classe(s)"
if objFSO.Folderexists(strMesClasses&prof) then
objFSO.deleteFolder strMesClasses&prof
End IF
objFSO.CreateFolder(strMesClasses&prof)
objFSO.CreateFolder(strMesClasses&prof&"\enonces")
objFSO.CreateFolder(strMesClasses&prof&"\depose_travail")
for i = 1 to nbClasses
'objFSO.CreateFolder(strMesClasses&prof&"\"&arrCol(i))
objFSO.CopyFolder strZoneEleves&arrCol(i), strMesclasses&prof&"\"&arrCol(i)
Call rac(strMesClasses&prof&"\depose_travail\"&arrCol(i)&".lnk", "%windir%\explorer.exe", "/e,/root," & strDepose&arrCol(i), strDepose&arrCol(i)& "\", 1, "%windir%\explorer.exe,1")
Call rac(strMesClasses&prof&"\enonces\"&arrCol(i)&".lnk", "%windir%\explorer.exe", "/e,/root," & strEnonce&arrCol(i), strEnonce&arrCol(i)& "\", 1, "%windir%\explorer.exe,1")
Next
Loop

'Création de la zone trav_disc
strTrav_Disc = "\\"&srvtrav_disc&"\"&shareTrav_disc&"\"
wscript.echo "trav disc="&strTrav_Disc
Set objGroup = GetObject ("LDAP://cn=cla_profs,cn=users,dc=voillaume,dc=local")
objGroup.GetInfo
arrMemberOf = objGroup.GetEx("member")
WScript.Echo "Traitement de la discipline :"
For Each strMember in arrMemberOf
temp = split(strMember,",")
temp2= split(temp(0),"=")
disc=temp2(1)
WScript.echo disc
if objFSO.FolderExists(strTrav_Disc&disc) then
wscript.echo "la discipline "&disc&" existe déja !"
else
objFSO.CreateFolder(strTrav_Disc&disc)
End IF
Next

 

Sub Rac(sUnc, target, arg, wrkdir, style, icon)
Dim ORaccourci
Set objShell = WSCript.CreateObject("WSCRIPT.Shell")
Set ORaccourci = objShell.CreateShortCut(sUnc)

ORaccourci.TargetPath=target
ORaccourci.Arguments=arg
ORaccourci.WorkingDirectory=wrkdir
ORaccourci.WindowStyle=style
if icon <>"" then
ORaccourci.IconLocation=icon
end if
ORaccourci.save
End Sub

Fin de la configuration, traitement des acls des zones individuelles :

ext_fin.bat

@echo off
for /f "tokens=1,2 delims==" %%i in (extgestrp.ini) do set %%i=%%j

echo zone mes classes

net use Z: /delete > NUL
net use Z: \\%SRVMES_CLASSES%\%DRIVEMES_CLASSES%$\%DIRMES_CLASSES% > NUL
FOR /d %%i in (Z:\*.*) DO CALL ext_sub.bat %%i read_ex

echo zone disciplines
Net Use z: /delete > NUL
Net Use z: \\%SRVTRAV_DISC%\%DRIVETRAV_DISC%$\%DIRTRAV_DISC% > NUL
FOR /d %%i in (Z:\*.*) DO CALL ext_sub.bat %%i change

ext_sub.bat

@echo off
SET VARC=%1
SET VARN=%VARC:~3%
echo traitement de %VARN%
SetACL -on %VARC% -ot file -actn ace -ace "n:%USERDOMAIN%\%VARN%;p:%2" -silent

Conclusion :

La création de ces ressources demande donc :

Reste à faire un menu.