#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage : $0 <nom_de_fichier>"
exit -l
fi
if [ -e $1 ]
then
while read ligne
do
nom=$(echo "$ligne"|cut -d: -f1) # On prend la chaine située avant le séparateur :
pass=$(echo "$ligne"|cut -d: -f2) # On prend la chaine située après le séparateur :
echo "Traitement de l'utilisateur $nom"
useradd "$nom" # on rajoute l'utilisateur que retourne $nom
echo $pass | passwd $nom --stdin # On affecte un mdp en retirant le passage en mode
interactif --stdin
done < $1
else
echo "Le fichier n'existe pas!"
exit -l
fi
luke@bebernux:~$ sudo ./ex22.sh test.txt
Password:
Traitement de l'utilisateur bebert
useradd : l'utilisateur bebert existe
passwd: option invalide -- -
Usage : passwd [-f|-s] [nom]
passwd [-x max] [-n min] [-w avert] [-i inact] nom
passwd {-l|-u|-d|-S|-e} nom
luke@bebernux:~$ sudo ./ex22.sh test.txt Traitement de l'utilisateur bebert Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not matchpasswd : Authentication information cannot be recovered
su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g USERS -p `cat liste_user | grep $i | cut -d":" -f2` -s /bin/bash ; done"
>tail /etc/passwd TEST0:*:2007:15:utilisateur TEST:/home/TEST0:/usr/bin/ksh TEST1:*:2008:15:utilisateur TEST:/home/TEST1:/usr/bin/ksh TEST2:*:2009:15:utilisateur TEST:/home/TEST2:/usr/bin/ksh TEST3:*:2010:15:utilisateur TEST:/home/TEST3:/usr/bin/ksh TEST4:*:2011:15:utilisateur TEST:/home/TEST4:/usr/bin/ksh TEST5:*:2012:15:utilisateur TEST:/home/TEST5:/usr/bin/ksh TEST6:*:2013:15:utilisateur TEST:/home/TEST6:/usr/bin/ksh TEST7:*:2014:15:utilisateur TEST:/home/TEST7:/usr/bin/ksh TEST8:*:2015:15:utilisateur TEST:/home/TEST8:/usr/bin/ksh >
C'est déjà pas mal de faire ce qu'on te dit. Beaucoup ne sont pas comme toi... :-))Citation
bebert-2002
merci pour ta réponse, mais,
primo : si j'écris un script, c'est parce qu'on me
demande de le faire
Euh... si tu mets la commande dans un script c'est un peu faire un script non ?Citation
bebert-2002
secundo : écrire un script ca évite de te refarcir
toute la commande telle que tu l'écris
Là suis pas d'accord. Tu mets après "-p" la chaîne telle qu'elle sera écrite dans "/etc/shadow" donc c'est le mot de passe crypté que tu y mets et point de passe en clair...Citation
bebert-2002
tertio : useradd -p = mot de passe en clair
Bien sûr...Citation
bebert-2002
Ceci dit, merci, je vais quand même utilisER -p en
traitant un passage par crypt
#!/bin/bashavant la ligne que je t'ai fourni est basta.....
root@bebernux:/home/luke# su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g USERS -p `cat liste_user | grep $i | cut -d":" -f2` -s /bin/bash ; done" Usage: grep [OPTION]... PATRON [FICHIER]... Pour en savoir davantage, faites: « grep --help ». bash: -c: line 1: syntax error near unexpected token `nanard' bash: -c: line 1: `nanard'
su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g users -p `cat liste_user | grep -i $i | cut -d":" -f2` -s /bin/bash ; done" Usage: grep [OPTION]... PATRON [FICHIER]... Pour en savoir davantage, faites: « grep --help ».
root@bebernux:/home/luke# tail --lines=1 /etc/shadow /bin/bash:-s:13203:0:99999:7:::
Citation
elfato
en prime ce que tu dis est faux le password n"est absoluement pas passé en clair mais en crypté
deplus il n"apparait pas puisque tu le pompe dans le fichier source (la liste des utilisateurs à créer)
root@bebernux:/home/luke# ./ex22.sh test.txt Traitement de l'utilisateur bebert Traitement de l'utilisateur nanard Traitement de l'utilisateur elfato root@bebernux:/home/luke# tail --lines=3 /etc/passwd bebert:x:5503:100::/home/bebert: nanard:x:5504:100::/home/nanard: elfato:x:5505:100::/home/elfato: root@bebernux:/home/luke# tail --lines=3 /etc/shadow bebert:bebert:13203:0:99999:7::: nanard:nanard:13203:0:99999:7::: elfato:elfato:13203:0:99999:7:::
Tu n'as pas compris ce qu'on voulait t'expliquer !!!Citation
bebert-2002
Je vous remercie pour vos réponses,
j'ai beau tester la commande que tu donnes elfato,
elle ne fonctionne pas :
root@bebernux:/home/luke# su -c "for i in `cat
liste_user|cut -d":" -f1` ; do useradd -c `echo
"utilisateur_$i"` -d /home/$i -m -g USERS -p `cat
liste_user | grep $i | cut -d":" -f2` -s /bin/bash
; done"
Usage: grep ... PATRON ...
Pour en savoir davantage, faites: « grep --help
».
bash: -c: line 1: syntax error near unexpected
token `nanard'
bash: -c: line 1: `nanard'
en changeant un peu :
su -c "for i in `cat liste_user|cut -d":" -f1` ;
do useradd -c `echo "utilisateur_$i"` -d /home/$i
-m -g users -p `cat liste_user | grep -i $i | cut
-d":" -f2` -s /bin/bash ; done"
Usage: grep ... PATRON ...
Pour en savoir davantage, faites: « grep --help
».
résultat :
root@bebernux:/home/luke# tail --lines=1
/etc/shadow
/bin/bash:-s:13203:0:99999:7:::
enfin,
elfato a écrit : en prime ce que tu dis est faux
le password n"est absoluement pas passé en clair
mais en crypté
deplus il n"apparait pas puisque tu le pompe dans
le fichier source (la liste des utilisateurs à
créer)
Si tu regardes bien mon exemple de fichier que
j'ai mis en haut, pour rappel :
bebert:bebert
nanard:nanard
elfato:elfato
Les mdp, situés après : ne sont pas ce que l'on
peut appeler cryptés, et pour preuve :
root@bebernux:/home/luke# ./ex22.sh test.txt
Traitement de l'utilisateur bebert
Traitement de l'utilisateur nanard
Traitement de l'utilisateur elfato
root@bebernux:/home/luke# tail --lines=3
/etc/passwd
bebert:x:5503:100::/home/bebert:
nanard:x:5504:100::/home/nanard:
elfato:x:5505:100::/home/elfato:
root@bebernux:/home/luke# tail --lines=3
/etc/shadow
bebert:bebert:13203:0:99999:7:::
nanard:nanard:13203:0:99999:7:::
elfato:elfato:13203:0:99999:7:::
Alors certes je n'ai pas ta maitrise, ni ta
connaissance, mais j'ai écrit cela, c'est parce
que je l'ai vérifié![]()
merci quand même