Probleme avec script de gestion des users

Résolu
nulenbash Messages postés 21 Statut Membre -  
nulenbash Messages postés 21 Statut Membre -
Salut tout le monde, je doit rendre un devoir en bash unix : creer un fichier texte avec ligne : [nom prenom login] des users puis creer un script prenant en parametre : le nom du fichier, le repertoire des repertoires principaux des utilisateurs, le groupe des users, le mot de passe crypté.
Le script doit: verifier si le groupe existe et le creer si necessaire, creer les compte utilisateurs.
ce que j ai fait : verifier le nombre de parametre, demander au gars si il est d accord avec ce qui va etre fait de ses parametre, creer le groupe.

Probleme: pour creer les utilisateurs (useradd) il faut que je fasse une boucle (for?) et que j'aille chercher dans les lignes du fichier les noms des utilisateurs ....
nbligne= wc -l $1
i=0
testi= [ i -ne nbligne ]
while $testi
do
useradd !!!!!!!!!!! QUOIQUEJEFAIS !!!!!!!!!!!!!!!!!!!
i++
done

Je vous remercie d avance de bien vouloir me filer un coup de main
.

6 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Un peu de lecture pour les tests et les bouclesen shell :
    http://www.c-sait.net/cours/scripts.php

    Les fonctions qui vont te servir :
    grep
    xargs
    useradd
    addgroup
    cut

    Exemple : supposons que tu aies le fichier plop.txt contenant :
    plop1
    plop2
    plop3

    ou plop1...plop3 correspondent à 3 noms d'utilisateurs :
    cat plop.txt | xargs useradd

    Il faut que tu comprennes les "pipes" (si j'ose dire) et la fonction xargs,et tu verras que c'est facile. Un autre exemple : compter le nombre de ligne de chaque fichier se termnant par pp, à partir de la position courante :
    find * | grep "pp$" | xargs wc -l

    Le "pipe" correspond à l'opérateur "rond" en math (composition de fonction), et xargs consiste à faire une sorte de boucle for pour chaque ligne du flux de texte émis devant le '|'.

    Bonne chance
    0
  2. nulenbash Messages postés 21 Statut Membre
     
    salut mamiemando

    je tourne sous windows pro et je n'est pas le moyen de tester mes scripts
    peut tu me dire s'il est possible de telecharger un programme me permettant de faire ces test

    je n'ai pas compris la commande xargs
    j'ai été voir sur le site http://www.c-sait.net/cours/scripts.php
    mais le site est assez peu explicatif / general
    je voudrais des exemples de cas xargs

    je te remercie de toute l'aide que tu pourrais m'apporter
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    l'équivalent de find * | grep "pp$" | xargs wc -l

    peut être
    find /repertoire -name '*pp' -exec wc -l {} \;
    lami20j
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    L'idée c'était de lui montrer les "pipes" si j'ose dire, car dans son cas c'est ce qu'il devra utiliser. Pour tester tes scripts, installe cygwin ou connecte toi à un serveur linux avec putty. Tu peux aussi utiliser un liveCD de knoppix et booter sur ce CD.

    Pour les xargs je t'ai déjà donné deux exemples ! Si tu en veux d'autre, un petit coup de google et tu devrais trouver.

    Bonne chance
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      L'idée c'était de lui montrer les "pipes" si j'ose dire,

      Oui tu peux oser :-) et moi je n'ai rien dit.

      lami20j
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut tout le monde,

    Si l'on tient compte de ce qu'a dit "nulenbash" dans son 1er post, je cite :"creer un fichier texte avec ligne : [nom prenom login] des users"; perso je verrai davantage un truc du genre (attention ceci n'est qu'un exemple sensé montrer comment parser un fichier dans une boucle) :
     while read ligne ; do echo "$ligne" | cut -d: -f 3 ; done < fich.txt
    ou "fich.txt" contiendrait les lignes suivantes :
    nom1:prenom1:login1
    nom2:prenom2:login2
    nom3:prenom3:login3
    nom4:prenom4:login4
    Bien sur à adapter en fonction des besoins, nottament en traitant chaque ligne comme l'a suggéré "mamiemando" avec "xargs".

    ;-))
    0
  7. nulenbash Messages postés 21 Statut Membre
     
    salut a tous
    j ai toujours pas tester les commandes
    j'ai essayez d'allez sur cygwin ou j'ai downloader le setup.exe et sa version nouvelle (maitenant) mais chaque fois ca ne fait rien quand je le lance en connexion directe su une url mirror.circ.fr ou cigwin.circ.fr et mir.zyrianes.net (les mirror de france) mais : erreur ligne 4841 do you have last setup

    j'ai downloder putty mais probleme il veut pas connecter

    je download knoppix mais yen a encore pour 1 heure

    je vous remercie tous de vos interventions

    ps : question subsidiaire : mon prof me demande aussi :"utiliser awk pout creer un script temporaire qui contient les commandes de creation"

    quelqu'un peut il me traduire en langage courant "script temporaire..."

    A+
    0