Partage
  • Partager sur Facebook
  • Partager sur Twitter

Creer des utilisateurs avec un nom compose

    12 décembre 2023 à 18:53:14

    Bonjour, je souhaiterai faire un script qui, avec un fichier csv, creer des répertoires pour chaqune des personnes présente dans le csv, sauf que probleme, certaines on un nom composé, et je souhaiterai pouvoir mettre un tiret entre les 2 noms de familles
    # fichier nanti.csv :
     
    forename;name;password;department
    Elon;Musk;$220B;Technology
    Bernard;Arnault;$172B;Consumer
    Jeff;Bezos;$170B;Technology
    Bill;Gates;$134B;Technology
    Larry;Ellison;$131B;Technology
    Steve;Ballmer;$130B;Technology
    Mark;Zuckerberg;$123B;Technology
    Larry;Page;$123B;Technology
    Warren;Buffett;$121B;Diversified
    Sergey;Brin;$117B;Technology
    Carlos;Slim;$92.8B;Diversified
    Francoise;Bettencourt Meyers;$92.5B;Consumer
    Mukesh;Ambani;$87.5B;Energy
    Amancio;Ortega;$80.1B;Retail
    Jim;Walton;$70.5B;Retail
    John;Walton;$69.3B;Retail
    Julia;Walton;$68.2B;Retail
    Michael;Dell;$67.9B;Technology
    Zhong;Shanshan;$65.0B;Diversified
    Julia;Flesher Koch;$64.4B;Industrial
    Charles;Koch;$60.5B;Industrial
    Gautam;Adani;$59.3B;Industrial
    Jacqueline;Badger Mars;$47.0B;Food & Beverage
    John;Mars;$47.0B;Food & Beverage
    Jensen;Huang;$44.8B;Technology
    Alain;Wertheimer;$44.4B;Consumer
    Gerard;Wertheimer;$44.4B;Consumer
    Zhang;Yiming;$42.3B;Technology
    Colin;Huang;$41.9B;Technology
    Phil;Knight;$41.3B;Consumer
    Len;Blavatnik;$38.7B;Diversified
    Klaus-Michael;Kuehne;$38.1B;Industrial
    Tadashi;Yanai;$38.0B;Retail
    Ma;Huateng;$37.6B;Technology
    William;Ding;$36.4B;Technology
    Ken;Griffin;$36.0B;Finance
    Stephen;Schwarzman;$36.0B;Finance
    Francois;Pinault;$35.3B;Consumer
    MacKenzie;Scott;$34.1B;Technology
    Miriam;Adelson;$33.6B;Entertainment
    Giovanni;Ferrero;$33.3B;Food & Beverage
    Abigail;Johnson;$33.2B;Finance
    Shapoor;Mistry;$32.4B;Industrial
    Vladimir;Potanin;$31.1B;Commodities
    Shiv;Nadar;$30.8B;Technology
    Dieter;Schwarz;$30.6B;Retail
    German;Larrea;$30.5B;Commodities
    Jack;Ma;$29.2B;Technology
    James;Simons;$28.5B;Finance
    Jeff;Yass;$28.4B;Finance
    Li;Ka-shing;$28.0B;Real Estate
    Leonid;Mikhelson;$27.8B;Energy
    Low;Tuck Kwong;$27.6B;Energy
    Susanne;Klatten;$26.9B;Industrial
    Eric;Schmidt;$26.8B;Technology
    Zeng;Yuqun;$26.5B;Industrial
    Andrew;Forrest;$25.8B;Commodities
    Lukas;Walton;$24.8B;Retail
    Vagit;Alekperov;$24.6B;Energy
    Thomas;Peterffy;$24.5B;Finance
    Iris;Fontbona;$24.4B;Commodities
    Reinhold;Wuerth;$24.0B;Industrial
    Gina;Rinehart;$24.0B;Commodities
    Vladimir;Lisin;$23.9B;Industrial
    Elaine;Marshall;$23.8B;Industrial
    Prajogo;Pangestu;$23.7B;Energy
    Takemitsu;Takizaki;$23.5B;Technology
    Changpeng;Zhao;$23.5B;Finance
    Stefan;Quandt;$23.1B;Industrial
    Azim;Premji;$23.0B;Technology
    He;Xiangjian;$22.9B;Consumer
    Ernesto;Bertarelli;$22.7B;Diversified
    Thomas;Frist;$22.6B;Technology
    Jorge;Paulo Lemann;$22.5B;Food & Beverage
    Eyal;Ofer;$22.0B;Diversified
    Henry;Cheng;$21.8B;Retail
    Budi;Hartono;$21.7B;Diversified
    Xu;Yangtian;$21.5B;Retail
    Dan;Gilbert;$20.8B;Real Estate
    Michael;Hartono;$20.6B;Diversified
    Alisher;Usmanov;$20.5B;Diversified
    Mark;Mateschitz;$20.3B;Food & Beverage
    Gianluigi;Aponte;$20.2B;Services
    Lee;Shau Kee;$20.0B;Real Estate
    Idan;Ofer;$20.0B;Energy
    Alexey;Mordashov;$19.9B;Industrial
    Liu;Yongxing;$19.7B;Industrial
    Dilip;Shanghvi;$19.6B;Health Care
    Dustin;Moskovitz;$19.4B;Technology
    Vicky;Safra;$19.1B;Finance
    Rodolphe;Saade;$18.6B;Services
    Eduardo;Saverin;$18.6B;Technology
    John;Menard;$18.5B;Retail
    Stefan;Persson;$18.4B;Retail
    Radhakishan;Damani;$18.1B;Retail
    Lakshmi;Mittal;$18.1B;Commodities
    James;Dyson;$18.0B;Consumer
    Savitri;Jindal;$17.8B;Commodities
    Wang;Chuan-Fu;$17.8B;Consumer
    Hasso;Plattner;$17.7B;Technology
    #voici le script que j'ai commencé :
    #!/bin/bash
    # Lecture du fichier CSV
    while IFS=";" read -r prenom nom password department
    do
        # Génération du login
        login="${prenom:0:1}${nom:0:7}"
        # Si le nom est composé, on met un tiret entre les deux noms
        if [[ "$nom" == *";"* ]]; then
            nom_compose="${nom// /-}"  # Remplace les espaces par des tirets (donc c'est ici le probleme)
            login="${prenom:0:1}${nom_compose:0:7}"
        fi
        count=1
        original_login=$login  # Sauvegarde du login original
        while id "$login" &>/dev/null; do
            login="${original_login}$(printf '%02d' "$count")"
            ((count++))
        done
        # Création de l'utilisateur
        useradd -m -d "/home/$login" -s /bin/bash -c "Utilisateur $prenom $nom" -p "$(openssl passwd -1 $password)" "$login"
    done < nanti.csv

    -
    Edité par Flykii 12 décembre 2023 à 18:53:59

    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2023 à 19:35:04

      if [[ "$nom" == *";"* ]]

      Comment un nom pourrait avoir un point virgule ?

      Vous devriez chercher un espace pour identifier les noms composés.

      Le login est généré en prenant la première lettre du prénom et les 7 premières lettres du nom. Si vous voulez gérer les noms composés avec un tiret, vous devez appliquer cette logique après avoir remplacé les espaces par des tirets.

      Placez la ligne nom_compose="${nom// /-}" à l'extérieur de la condition

      Dans votre script, le login est généré avant le traitement des noms composés. Cela signifie que pour les noms composés, le login ne tiendra pas compte du remplacement des espaces par des tirets.

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

      Creer des utilisateurs avec un nom compose

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown