IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

[débutant] Problème .csv pour création user dans LDAP


Sujet :

Programmation et administration système Perl

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 26
    Points : 9
    Points
    9
    Par défaut [débutant] Problème .csv pour création user dans LDAP
    Bonjour,

    Je débute en perl (1ère année d'info) avec le confinement dur de pas avoir le prof pour poser des questions.
    Je voulais me faire un script permettant d'ajouter un/des utilisateurs à la base de données ainsi que dans le ldap. Côté base de données, le script se déroule sans encombre, mais côté LDAP rien ne se passe.

    Je possède un .csv contenant : identifiant, nom, prenom, mot_passe, email, iduser, idgroup, date_expiration

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    use strict;
    use warnings;
    use Net::LDAP;
    
    ............... Ce qui précède concerne base de données donc OK ...............
    
    #Connection ldap
    
    my $ldap = Net::LDAP->new('blabla', port => 389, version => 3) or die "Impossible de contacter l'annuaire";
    
    #Identification
    $ldap->bind ("cn=Foo, dc=Foo, dc=com", password => "secret);
    
    #Chemin d'accès du csv
    my $csv = '/Toto/users.csv' ;
    
    #Ouverture du fichier csv + décomposition etc
    open (my $fh, '<', $csv) or die "Impossible d'ouvrir le $csv";
    
    C'est surement là où ça cloche :D J'aimerai récupérer les infos de mon csv entre les virgules et les injecter dans l'ajout d'un enregistrement d'un utilisateur
    while (my $line=<$fh>) {
       chomp $line;
       my @don = split (/,/, $line);
     $mesg = $ldap->add( "uid='$don[1],o=users,dc=com",
        attr => [
            objectClass   =>
                [ 'top', 'person','organizationalPerson' ,'inetOrgPerson', 'posixAccount', 'shadowAccount' ],
            uid     => '$don[0]', // qui représente la donnée identifiant
            cn            => '$don[2]$don[1]', // qui représente les données prénom et nom 
            sn            => '$don[1]', // qui représente la donnée nom
            givenName => '$don[2]' // qui représente la donnée prénom
            uidNumber     => $don[5], // qui représente la donnée iduser
            gidNumber     => $don[5], // qui représente la donnée idgroup
            homeDirectory => '/home/don[0]', // qui représente le /home/identifiant
            description   => '$don[2]', 
            loginShell    => '/bin/bash',
            mail           => '$don[2]$don[1]'@exemple.com', // qui représente les données prénom et nom 
            shadowMin => '0',
            shadowMax   => '999999',
            shadowWarning => '7',
            shadowInactive => '-1',
            shadowExpire => '17266',
            shadowFlag => '0',
    
        ]
      );
    
    // Peut -être vider le tableau ?
    }
    
    #Chemin d'acc
    close $fh;

    J'espère que c'est clair car au vue de l'heure

    Merci à vous

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Plusieurs choses:
    • Es-tu sûre que les champs de ton csv peuvent-être séparés d'un simple split et qu'aucun d'entre eux ne sont protégés par des quotes? Dans le cas contraire, mieux vaut utiliser le module Text::CSV.
    • Ensuite, plutôt que de te débattre avec les index d'un tableau de champs qui rendent le code illisible, peut-être serait-il mieux de nommer les choses: apparemment tu as moins de 10 champs par ligne. Pourquoi ne pas créer une variable avec un nom adéquate par champ (à toi de trouver lequel):
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      my ($champ1, $champ2, ..., $champn) = split (/,/, $line);
      ou encore mieux en construisant un hash?
    • Il y a pas mal de simple quotes ' qui traînent un peu partout dans ton code. D'autre part, une variable entre simple quotes n'est pas interprétée.


    Dans un premier temps tu devrais déjà te concentrer sur l'extraction et le nommage des champs du csv et simplement les afficher dans ta boucle pour t'assurer que tout est correct, ensuite corrige la partie ldap.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci de ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($identifiant, $nom, ..., $champn) = split (/,/, $line);
    Effectivement beaucoup plus simple, pourquoi ne pas y avoir pensé plus tôt ? ahaha

    Concernant l'extraction et le nommage des champs du csv et les afficher dans la boucle - Tout est ok.
    Là où sa pose problème c'est côté ldap, rien ne se passe hélas. Je vais un peu creuser le problème.

Discussions similaires

  1. [XL-2013] Créer un fichier CSV pour importation contacts dans Outlook
    Par lety 't be dans le forum Excel
    Réponses: 4
    Dernier message: 23/12/2019, 18h49
  2. [SP-2007] Lien hypertexte pour création dossier dans bibliothèque de documents
    Par Jullll dans le forum SharePoint
    Réponses: 4
    Dernier message: 06/08/2014, 16h42
  3. [XL-2003] Problème macro pour appeler valeur dans des tableaux
    Par phnguyen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2012, 11h24
  4. ajouter des users dans LDAP on utilisant django
    Par romaysaa dans le forum Django
    Réponses: 1
    Dernier message: 08/09/2011, 12h25
  5. creation de user dans LDAP
    Par hageshii dans le forum VBScript
    Réponses: 0
    Dernier message: 23/06/2011, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo