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

Shell et commandes GNU Discussion :

Extraire de l'info d'un fichier texte pour creer des utilisateurs, groupe et mots de passes (script bash)


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Extraire de l'info d'un fichier texte pour creer des utilisateurs, groupe et mots de passes (script bash)
    Salut tout le monde!

    Je suis débutant avec bash et depuis quelques temps que je m'arrache un peu les cheveux à figurer la façon de faire pour extraire d'un fichier texte l'info qui s'y trouve et créer.
    Par exemple, dans un fichier texte j'ai l'info suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alex,morel,1978-02-04,programmeur
    laura,tremblay,1982-05-07,programmeur,rh
    j'aimerai que mon script puisse prendre le nom au complet, précédé de la première lettre de son prénom pour créer l'utilisateur. Ensuite, que l'année corresponde à son mot de passe et qu'il soit ajouter au groupe programmeur. Par exemple,

    utilisateur: amorel mp: 1978 groupe: programmeur

    à date, j'ai réussi à lire chaque ligne de mon fichier texte en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    echo $1
     
    exec<$1
    while read line
    do
    echo $line
    done

    et le output:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input.txt
    alex,morel,1978-02-04,programmeur
    laura,tremblay,1982-05-07,programmeur,rh
    Rendu ici, je suis un peu perdu pour intégrer IFS=',' la commande useradd et chpasswd

    Si jamais quelqu'un pouvait me donner quelques pistes, ça serait super. J'ai cherché sur le forum et j'ai réussi à faire quelques trucs, mais sans jamais réussir ce que je veux faire.

    merci d'avance

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour, et bienvenue,

    Comment lire/parcourir un fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,

    Voici une démonstration pour définir les différentes variables que tu peux avoir besoin en redéfinissant IFS uniquement pour la commande read et en bonus comment récupérer une sous partie (sous chaine) d'une variable:
    le fichier d'entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat uu.txt 
    alex,morel,1978-02-04,programmeur
    laura,tremblay,1982-05-07,programmeur,rh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ while IFS="," read prenom nom annee metier grade
    do
     echo "nom:$nom premon:$prenom annee:$annee grade:$grade metier:$metier"
     echo "premiere lettre du prenom:${prenom:0:1}"
     echo "2 premieres lettres du nom:${nom:0:2}"
    done <uu.txt 
    nom:morel premon:alex annee:1978-02-04 grade: metier:programmeur
    premiere lettre du prenom:a
    2 premieres lettres du nom:mo
    nom:tremblay premon:laura annee:1982-05-07 grade:rh metier:programmeur
    premiere lettre du prenom:l
    2 premieres lettres du nom:tr
    Ensuite, tu n'a plus qu'à utiliser ces variables pour les commandes useradd et chpasswd (dans la boucle bien sur).
    Cordialement.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Voici une démonstration pour définir les différentes variables que tu peux avoir besoin en redéfinissant IFS uniquement pour la commande read et en bonus comment récupérer une sous partie (sous chaine) d'une variable:
    le fichier d'entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat uu.txt 
    alex,morel,1978-02-04,programmeur
    laura,tremblay,1982-05-07,programmeur,rh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ while IFS="," read prenom nom annee metier grade
    do
     echo "nom:$nom premon:$prenom annee:$annee grade:$grade metier:$metier"
     echo "premiere lettre du prenom:${prenom:0:1}"
     echo "2 premieres lettres du nom:${nom:0:2}"
    done <uu.txt 
    nom:morel premon:alex annee:1978-02-04 grade: metier:programmeur
    premiere lettre du prenom:a
    2 premieres lettres du nom:mo
    nom:tremblay premon:laura annee:1982-05-07 grade:rh metier:programmeur
    premiere lettre du prenom:l
    2 premieres lettres du nom:tr
    Ensuite, tu n'a plus qu'à utiliser ces variables pour les commandes useradd et chpasswd (dans la boucle bien sur).
    Merci beaucoup pour vos réponses! Je vais tester le tout et je vous reviens avec mes résultats! Ça m'éclaire beaucoup sur ce que je dois faire!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Comment exploiter un fichier texte pour extraire des infos ?
    Par hackoofr dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/07/2015, 08h36
  2. lire et utiliser les donnees d'un fichier texte pour afficher des courbes
    Par messaoudi2009 dans le forum Général Java
    Réponses: 1
    Dernier message: 29/04/2009, 21h00
  3. Récupérations d'infoS dans un fichier texte
    Par remsrock dans le forum C#
    Réponses: 8
    Dernier message: 01/07/2008, 18h38
  4. [Qbasic] Infos port série -> fichier texte
    Par zoid54 dans le forum Basic
    Réponses: 2
    Dernier message: 28/04/2007, 21h53
  5. [Debutant] stockage d'infos dans un fichier texte
    Par Cheeper dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/01/2007, 11h02

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