Probleme avec script de gestion des users [Résolu/Fermé]

Signaler
Messages postés
21
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
18 décembre 2006
-
Messages postés
21
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
18 décembre 2006
-
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

Messages postés
29914
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juin 2021
7 130
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
Messages postés
21
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
18 décembre 2006

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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Salut,

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

peut être
find /repertoire -name '*pp' -exec wc -l {} \;
lami20j
Messages postés
29914
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juin 2021
7 130
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 862
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".

;-))
Messages postés
21
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
18 décembre 2006

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+