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

Linux Discussion :

scripts d'ajout d'utilisateur


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut scripts d'ajout d'utilisateur
    Salut,
    Je commence tout juste la programmation Shell mais je bute sur des difficultées techniques du à mon manque de base...

    J'ai un script à réaliser en voici la consigne :

    Écrire un script qui permet de créer plusieurs utilisateurs à partir d'un fichier de données.
    Le script aura pour paramètres le nom du groupe auquel appartiennent les utilisateurs et le nom du fichier de données.
    Le fichier de données à la structure suivante:
    chaque ligne correspond à un utilisateur
    le format d'une ligne est : pseudo:prénom:nom
    Le script fournira aussi un fichier qui contiendra la liste des utilisateurs qui n'ont pu être créés car ils existaient déjà. Cette liste sera affichée à la fin de l'exécution du script.

    Ma 1ère question est comment rentrer dans le fichier texte pour découper les 3 champs et les mettrent chacun dans 3 variables distinctes ?

    Merci d' avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par samsoft78 Voir le message
    Ma 1ère question est comment rentrer dans le fichier texte pour découper les 3 champs et les mettrent chacun dans 3 variables distinctes ?
    Faut utiliser le "while read" qui boucle tant que "read" est vrai (c.a.d. tant que le "read" a lu une info se terminant par <return>)

    Voici la technique que je préfère
    Code : 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
    #!/bin/sh
     
    # Création d'un canal input particulier contenant le fichier à traiter
    exec 3<fichier_a_traiter
     
    # Traitement du canal 3 (le fichier) ligne par ligne
    while read lig 0<&3
    do
         # Extraction des 3 infos (on considère que le séparateur est le ";")
         info1=`echo $lig |cut -f1 -d\;`
         info2=`echo $lig |cut -f2 -d\;`
         info3=`echo $lig |cut -f3 -d\;`
     
         # Traitement des infos
         echo "$info1, $info2, $info3"
    done
    Cette technique est ma préférée car on peut créer autant de canaux input que l'on veut et donc traiter en parallèle plusieurs fichiers mais ce n'est pas celle qu'un débutant aurait trouvé par lui-même.

    Cette autre est plus dans l'idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/sh
     
    # Traitement de l'entrée standard ligne par ligne
    while read lig
    do
         # Extraction des 3 infos (on considère que le séparateur est le ";")
         info1=`echo $lig |cut -f1 -d\;`
         info2=`echo $lig |cut -f2 -d\;`
         info3=`echo $lig |cut -f3 -d\;`
     
         # Traitement des infos
         echo "$info1, $info2, $info3"
    done <fichier_a_traiter
    Ici, on redirige l'entrée standard à partir du fichier. Mais le seul point invariant auquel on ne peut pas échapper est qu'il faut passer par un "while read" qui boucle tant que le read est vrai (or le read renvoie faux quand il ne lit plus rien)

    Citation Envoyé par samsoft78 Voir le message
    Je commence tout juste la programmation Shell mais je bute sur des difficultées techniques du à mon manque de base...
    -> Cours et tutoriels Linux
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Merci beaucoup pour cette réactivité !

    Je test tes différentes techniques très bientot et te tiens au courant de mon avancement.
    Je me penche aussi sur ton tuto
    Merci beaucoup !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut Galère...
    Salut,

    J'ai essayé les différentes solutions que tu me propose mais je bloque...
    Voici mon code :

    Code : 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
    #! /bin/bash
    #Etape 4::FANTAR::01/11/2007::
     
     
    #Vérification de la saisie de 2 paramètres
    if [ $# -ne 2 ]
    then echo "saisissez 2 paramètres"
    exit 1
    fi 
     
    #Vérification que le groupe existe dans le répertoire /etc/group
    if grep "^$1": /etc/group > /dev/null
    then echo "Le groupe existe" 
    cat -n $2 >> /home/samsoft/Bureau/liste_already_users
    else echo "Le groupe n'existe pas >> Création du groupe $1"
    groupadd $1
    exit 1
    fi
     
     
    # Création d'un canal input particulier contenant le fichier à traiter
    exec 3<$2
     
    # Traitement du canal 3 (le fichier) ligne par ligne
    while read lig 0<&3
    do
         # Extraction des 3 infos (on considère que le séparateur est le ";")
         info1=`echo $lig |cut -f1 -d\:`
         info2=`echo $lig |cut -f2 -d\:`
         info3=`echo $lig |cut -f3 -d\:`
     
         # Traitement des infos
         echo "$info1, $info2, $info3"
    done
     
    #fin Etape 4::FANTAR::01/11/2007::

    Mais je ne comprends pas à quoi sert le "lig" et comment après avoir récupérer trois variables pseudo prénom nom, créer automatiquement un user à partir de ces 3 variables... chui perdu

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut Progression !!!
    Après plusieurs heures de test et de reflexion voici mon code qui créer les users à partir du fichier contenant les lignes pseudos:prenom:nom !

    Code : 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
     
     
    #! /bin/bash
    #Etape 4::FANTAR::01/11/2007::
     
     
    #Vérification de la saisie de 2 paramètres
    if [ $# -ne 2 ]
    then echo "saisissez 2 paramètres"
    exit 1
    fi 
     
    #Vérification que le groupe existe dans le répertoire /etc/group
    if grep "^$1": /etc/group > /dev/null
    then echo "Le groupe existe" 
    cat -n $2 >> /home/samsoft/liste_already_users
    else echo "Le groupe n'existe pas >> Création du groupe $1"
    echo "Veuillez relancer le script pour ajouter les users au groupe $1"
    groupadd $1
    exit 1
    fi
     
     
    # Création d'un canal input particulier contenant le fichier Ã* traiter
    exec 3<$2
     
    # Traitement du canal 3 (le fichier) ligne par ligne
    while read lig 0<&3
    do
         # Extraction des 3 infos (on considère que le séparateur est le ":")
         pseudo=`echo $lig |cut -f1 -d\:`
         prenom=`echo $lig |cut -f2 -d\:`
         nom=`echo $lig |cut -f3 -d\:`
     
         # Traitement des infos
         echo $pseudo $prenom $nom
     
    #Création de l'utilisateur & des répertoires
    useradd -g $1 -d /home/$pseudo -c "$prenom $nom" $pseudo
    #mkdir /home/$1/$pseudo
    #echo "répertoire /$2/$1 créer"
     
     
    #Messages de confirmation
    echo "création de l'utilisateur $pseudo terminée"
    done
     
    #fin Etape 4::FANTAR::01/11/2007::
    mais voila, maintenant j'aimerai vérifier que les users existe et si oui, rediriger le user existant dans un autre fichier. Comme indiquez dans la consigne de l'exercice.
    I need help !

    Merci d'avance

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par samsoft78 Voir le message
    Après plusieurs heures de test et de reflexion
    Héhé... tu vois que ton cerveau n'est pas inutile
    Citation Envoyé par samsoft78 Voir le message
    mais voila, maintenant j'aimerai vérifier que les users existe et si oui, rediriger le user existant dans un autre fichier. Comme indiquez dans la consigne de l'exercice.
    De quelle façon as-tu vérifié que le groupe existait ? Tu es allé voir dans "/etc/group" avec un "grep"
    Ben pour le user c'est pareil. Tu n'as qu'à aller voir dans "/etc/passwd" s'il y est...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Script pour ajout utilisateur virtuel
    Par Resss dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/02/2012, 13h47
  2. [PowerShell] Script d'ajout d'utilisateurs dans l'AD
    Par septar77 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 24/11/2011, 14h31
  3. créer un script d'ajout d'utilisateur
    Par Sfaxiano dans le forum MySQL
    Réponses: 5
    Dernier message: 14/04/2010, 15h37
  4. script pour ajouter des utilisateurs postgres
    Par xopos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 16/08/2004, 10h49

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