cs_sabyann
Messages postés7Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention18 avril 2008
-
12 mars 2008 à 16:24
cs_sabyann
Messages postés7Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention18 avril 2008
-
14 mars 2008 à 14:58
Bonjour à tous et à toute...
J'ai un petit problème dans ma plantation.
Je dois faire un script supprimant les lignes d'un texte selon des droit incohérents sur les répertoires.
J'ai réussi à générer un fichier texte en utilsant dumpsec.
Ci-dessous un morceau de mon fichier texte:
\\serveur\répertoire\truc\,BIDULE\truc ,RWXD RWXD
\\serveur\répertoire\truc\,BIDULE\Domain Admins ,all all
j'ai réussi à supprimer les lignes concernant les droits liés à l'administration par mot clé comme ceci:
Dim FSO, Fichier, cible, Ligne
Set FSO = CreateObject("Scripting.FileSystemObject" )
Set Fichier = FSO.OpenTextFile("c:\resultat_in.txt" ) 'fichier à analyser
Set cible = FSO.CreateTextFile("c:\resultat_out.txt",true) 'fichier resultat
Do While Not Fichier.AtEndOfStream
Ligne = Fichier.Readline
if Instr (Ligne, "ZZZ-M" ) = 0 then 'test de la presence de la chaine
if Instr (Ligne, "Domain Admins" ) = 0 then
if Instr (Ligne, "Administrators" ) = 0 then
cible.writeline Ligne 'si elle n'y est pas on ecrit
end if
end if
end if
Loop
Fichier.Close
cible.close
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 14 mars 2008 à 13:03
Bonjour,
Chaque ligne extraite est mise dans un tableau.
Ceci pour éviter les accès read (infile) et write (outfile).
Puis, lecture du tableau et écriture dans outfile.
Le Join(arrLine,"") permet de remettre les antislashs éliminés par le split précédent.
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFso.OpenTextFile(strInfile, 1)
Do While Not objTextStream.AtEndOfStream
arrLine = Split(objTextStream.ReadLine,"")
If UBound(arrLine) > 2 Then
If UBound(Filter(arrLine, arrLine(UBound(arrLine)-2))) = 0 Then
ReDim Preserve arrResult(UBound(arrResult) + 1)
arrResult(UBound(arrResult)) = Join(arrLine,"")
End If
End if
Loop
objTextStream.Close
Set objTextStream = objFso.OpenTextFile(strOutfile, 2, True)
If UBound(arrResult) <> 0 Then
For i=1 To UBound(arrResult)
objTextStream.Write arrResult(i) &vbcrlf
Next
End If
objTextStream.Close
cs_sabyann
Messages postés7Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention18 avril 2008 13 mars 2008 à 10:41
Merci pour vos réponses,
J'ai un fichier texte m'indiquant sur chaque ligne (environs 2000) les comptes ayant des droits sur les répertoires.
En faites, je veux garder les lignes incohérentes. (peut etre peut on le faire en vérifiant si les caracteres entre le 3éme et le 4eme \ de chaque ligne se répetent entre le 5éme et le 6ème?)
\\serveur\répertoire\truc\,BIDULE\truc ,RWXD RWXD -> ici tout va bien puisque c'est le compte truc qui a les droits sur son répertoire (à effacer).
\\serveur\répertoire\machin\,BIDULE\truc ,RWXD RWXD ->ici truc à les doits sur le répertoire de machin, donc je veux le faire remonter dans mon fichier texte (à garder).
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 13 mars 2008 à 13:35
Bonjour,
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFso.OpenTextFile(strFichier, 1)
Do While Not objTextStream.AtEndOfStream
arrLine = Split(objTextStream.ReadLine,"")
If UBound(arrLine) > 2 Then
If UBound(Filter(arrLine, arrLine(UBound(arrLine)-2))) = 0 Then
MsgBox arrLine(UBound(arrLine)-2) &vbCrLf&_
arrLine(UBound(arrLine))
End If
End if
Loop
objTextStream.Close
L'utilisation de la fonction Filter, dans ce cas précis, simplifie les tests.
\\serveur\répertoire\truc\,BIDULE\truc ,RWXD RWXD
sur cette ligne:
arrLine(UBound(arrLine)-2)) sert à extraire truc
ubound(filter) renvoie 0 si truc ne se trouve pas 2 fois sur la ligne.
cs_sabyann
Messages postés7Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention18 avril 2008 13 mars 2008 à 15:05
Merci Jean-marc, mais comment je l'applique à mon fichier...
J'ai encore beaucoup de mal avec le developpement en vbscript.sniffff. Mais c'est vraiment très pratique.
et il faut que je récupére un fichier en le SCHEDULENT.
Yann@++
cs_sabyann
Messages postés7Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention18 avril 2008 14 mars 2008 à 14:58
Jean-Marc,
C'est vraiment du bon boulot et c'est exactement ce que je voulais...
J'espere qu'un jour je pourrais apporter ma pierre a l'édifice comme tu le fais.
Yann