Probleme avec script de gestion des users

Résolu
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. 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+
    1. Modérateur
      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".

      ;-))
      1. Modérateur
        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
        1. Modérateur
          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
      2. Modérateur
        Salut,

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

        peut être
        find /repertoire -name '*pp' -exec wc -l {} \;
        lami20j
        1. 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
          1. Modérateur
            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

            Discussions similaires

            que veut dire C:\Users\

            9 réponses