[déplacé VB6 -> VBS] Verification d'un login via "un tant que"

chewiegum Messages postés 5 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 19:53
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 11 mars 2010 à 23:09
Bonjour à tous !
Dans mon script de création d'utilisateur je vérifie si le login n'existe pas déjà et si il existe je rajoute un nombre à la fin du login. Sauf que j'ai quelques soucis pour à la fin récupérer une variable "login" qui me sert pour la fin du script, car si le login est en double pas de soucis mais sinon ya soucis ^^.

log_login est un fichier texte sous cette forme : nom, prenom, login, service (d'où le split du fichier)

logintest = left(nom,1) & nom
i = 0
'##Validation du login##
do while not log_login.atendofstream
linetest = log_login.readline
decouplogin = split(log_login, ",")
if logintest = decouplogin(2) then
i = i + 1
login = logintest & i 
else
end if


Comment puis-je me dépatouiller avec ça ?

Merci beaucoup d'avance ^^

10 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 20:12
salut,

mais il nous manque le 3/4 de ton code là...

[hr]
0
chewiegum Messages postés 5 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 20:32
Le voila en entier, désolée ^^ :

set fso = createobject ("Scripting.filesystemobject")
set uo = getobject("LDAP://cn=users,dc=oracle,dc=com")
my_file = "d:\tp12\utils.txt"
fichier_login = "d:\tp12\logins.txt"
set selected_file = fso.opentextfile (my_file,1)
set log_login = fso.opentextfile (fichier_login,2)
'###############################################
do while not selected_file.atendofstream
my_line = selected_file.readline
'##On enleve les virgules pour separer##
decoup = split(my_line, ",")
decoup(0) = nom
decoup(1) = prenom
decoup(2) = service
'##
logintest = left(nom,1) & nom
i = 0
'##Validation du login##
do while not log_login.atendofstream
linetest = log_login.readline
decouplogin = split(log_login, ",")
if logintest = decouplogin(2) then
i = i + 1
login = logintest & i 
else
end if
'##Creation utilisateur##
nomMAJ = UCase(nom)
passwd = len(nom) & left(prenom,1) & left(nomMAJ,1) & "_" & left(service,4)
set user = uo.create("User","cn=" & nom)
user.setinfo
user.put "sAMAccountName", login
user.setinfo
user.setpassword passwd
user.setinfo
'##Rajoute user dans groupe##
set groupe = getobject("LDAP://cn=" & service & ",ou=DSI,dc=oracle,dc=com")
set user_ingroupe = getobject ("LDAP://cn=" & login & ",ou=DSI,dc=oracle,dc=com") 
groupe.add user_ingroupe.ADSPath
'##Crea Dossier##
dossier_util = "d:" & service & "" & login
set createdfolder = fso.createfolder (dossier_util)
'##Ecriture dans logins.txt##
fichier_login.writeline(nom & "," & prenom & "," & login & "," & passwd)
'##
i = i + 1
loop
'##Fin et fermeture fichiers##
selected_file.close
fichier_login.close
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 20:44
decoup = split(my_line, ",")
decoup(0) = nom
decoup(1) = prenom
decoup(2) = service

y'a pas comme un problème?
çà ne serait pas l'inverse?

et rassure-moi, tu t'es bien juste trompé de catégorie de forum? ce code, c'est du VBS, pas du VB6, n'est-ce pas?!

[hr]
0
chewiegum Messages postés 5 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 20:47
J'ai posté ce topic dans la section VBS pourtant O_o

Et pour le split, non ce n'est pas l'inverse j'ai déjà essayé (le morceau que tu as pris vient d'un fichier texte "utils.txt" qui contient : nom,prenom,service qui est différent de logins.txt qui contient : nom,prenom,login,password
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 21:08
... ok je la refait :

decoup est un tableau (non déclaré...) qui reçoit le résultat de ton split
et derrière tu attribues RIEN aux éléments 0 1 2 ?
çà ne serait pas plutôt :

dim decoup 'tableau temp
dim nom, prenom, service

do while not selected_file.atendofstream
  decoup = split(selected_file.readline, ",")
  nom = decoup(0)
  prenom = decoup(1)
  service = decoup(2)
  '...

???
0
chewiegum Messages postés 5 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 21:13
Ah oui c'est le contraire ^_^
Mais je suis obligé de déclaré le tableau ? (les dim ne me disent rien désolée ><)
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 21:52
pas besoin de TYPER en VBS (c'est même impossible)
ceci n'empêche pas de déclarer (DIM), c'est une rigueur à se donner
tout comme quelques majuscules pour aider à la relecture, l'indentation, etc....


sinon pour le reste beh.....
tu as 2 WHILE pour 1 seul LOOP (donc une boucle n'est pas fermée)
tu fais un SPLIT sur un STREAM (et non une STRING), etc...

en diagonale c'est... difficilement lisible
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 22:16
juste un essai mais sans conviction.....
(et pas testable, de toute manière)


Dim FSO 'File System Object
Set FSO = CreateObject("Scripting.filesystemobject")

Dim OU 'Organization Unit
Set OU = GetObject("LDAP://cn=users,dc=oracle,dc=com")
Dim Groupe 'groupe de l'OU
Dim UserParent 'enfant du groupe, parent/propriétaire de l'utilisateur
Dim User 'utilisateur du groupe

Dim FileUtils, FileLogins 'chemin des fichiers
FileUtils = "d:\tp12\utils.txt"
FileLogins = "d:\tp12\logins.txt"

Dim StreamUtils, StreamLogins 'contenus des fichiers
Set StreamUtils = FSO.opentextfile(FileUtils, 1)
Set StreamLogins = FSO.opentextfile(FileLogins, 2)

Dim Nom, UNom, Prenom, Service, Login, TLogin, Password 'data splitées depuis les 2 fichiers
Dim saTmpLine 'tableau depuis UNE ligne
Dim i 'incrément

Do While Not StreamUtils.atendofstream
'   ligne en cours, splitée
    saTmpLine = Split(StreamUtils.readline, ",")

'   nom prenom service
    Nom = saTmpLine(0)
    Prenom = saTmpLine(1)
    Service = saTmpLine(2)

'   login = nom précédé de première lettre du nom
    TLogin = Left(Nom, 1) & Nom
    Login = TLogin

'   vérification des autres logins non similaires
    i = 0
    Do While Not StreamLogins.atendofstream
        saTmpLine = Split(StreamLogins.readline, ",")
        If TLogin = saTmpLine(2) Then
            i = i + 1
            Login = TLogin & CStr(i)
        End If
    Loop
    
'   Creation utilisateur
    UNom = UCase(Nom)
    Password = CStr(Len(Nom)) & Left(Prenom, 1) & Left(UNom, 1) & "_" & Left(Service, 4)
    
    Set User = OU.Create("User", "cn=" & Nom)
    User.setinfo
    User.put "sAMAccountName", Login
    User.setinfo
    User.setpassword Password
    User.setinfo
    
'   Rajoute user dans groupe
    Set Groupe = GetObject("LDAP://cn=" & Service & ",ou=DSI,dc=oracle,dc=com")
    Set UserParent = GetObject("LDAP://cn=" & Login & ",ou=DSI,dc=oracle,dc=com")
    Groupe.Add UserParent.ADSPath

'   Creation Dossier
    FSO.createfolder "d:" & Service & "" & Login

    
'   Ecriture dans logins.txt
    FileLogins.writeline Nom & "," & Prenom & "," & Login & "," & Password
    
'   destruction
    Set Groupe = Nothing
    Set UserParent = Nothing
    Set User = Nothing
Loop

'Fin et fermeture fichiers
StreamUtils.Close
FileLogins.Close

Set StreamUtils = Nothing
Set FileLogins = Nothing
Set OU = Nothing
Set FSO = Nothing

0
chewiegum Messages postés 5 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 22:50
Merci je n'en demandais pas tant ^^

J'ai quelques questions sur ce code :

Qu'est ce que : CStr(Len(Nom)) ?
Pourquoi tu fais des set *** = nothing à la fin ?

Merci beaucoup, je testerai le script demain et je t'avertirai du résultat :D
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mars 2010 à 23:09
len renvoie un numérique
comme c'est vers une string (même s'il n'y a pas de type), j'ai mis CSTR pour la ConversionSTRing

set *** = nothing puisque tes objets sont créés en entrée, on les détruit en sortie
0