logo Homepage
+  NewbieContest
|-+  Divers» Linux» Scripting Unix -- Creation de comptes
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Scripting Unix -- Creation de comptes  (Lu 6607 fois)
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« le: 15 Septembre 2006 à 23:20:01 »

Bonjour,

Alors voila, j'ai un petit probleme dans un de mes scripts sous unix...
Le principe : le script doit generer tout seul les compte entier des users, avec tous leurs accès.

Tout fonctionne, sauf que il ya quelque chose qui me chiffonne...

Lorsque je lance le script, j'ai 3 prompt :
Login :
Mot de passe :
Email :

// Tout ca pour definir les users lors de la creations.

Mais pour créé le compte unix, je fait un :

# adduser toto [options]

Le probleme est qu'il me demande encore 2 fois de retaper le password unix pour ce compte...

Ne peut-on pas le passer en argument du style :
# adduser -p $password [options]
??

Et quel est la difference entre useradd et adduser ?? est est il possible de créé un user juste en rebuildant le fichier /etc/passwd, etc/shadow, creation de groupe, et tout le tintouin (un peu relou a faire tout ce que fait useradd, j'ai peur d'en oublier).

Mirci
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Nebelmann

Profil challenge

Classement : 462/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #1 le: 16 Septembre 2006 à 11:00:01 »

Il me semble que useradd et adduser ne sont pas toujours présents simultanément sur ta machine. Pour corser le tout, il n'ont pas les même noms de paramètres .

Quant à ton problème de saisie de mot de passe, tu peux essayer cette astuce (je suis sous windows, donc pas de tests possibles...) dans ton script :

adduser toto [options...] << FIN
ton_pass
ton_pass
FIN

C'est simple, ça simule une saisie de l'utilisateur jusqu'à ce que le script rencontre le mot situé après << (ici, FIN). Ta commande est exécutée, et dès qu'elle attend une saisie, le script lui fournit la ligne suivante (ton_pass), ainsi de suite.

Enfin, pour la modification des fichiers /etc/passwd et Cie, je pense que c'est ce que fait la commande adduser... (j'en mettrais pas ma main au feu :p) A tester si ;a technique plus haut ne fonctionne pas...

Un retour de tes tests serait le bienvenu
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #2 le: 16 Septembre 2006 à 12:20:45 »

Ca marche pas trop :

Code:
# adduser toto << adduser.sh
>
>Ctrl+D
#
avec dans adduser.sh :

Code:
test
test
Ca me donne donc juste une invite >, et il ne se passe rien...
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Nebelmann

Profil challenge

Classement : 462/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #3 le: 16 Septembre 2006 à 16:28:46 »

non, ce que je voulais dire, c'est que DANS TON SCRIPT tu mets (les # étant des commentaires) :

Code:
#des commandes avant

adduser --home /home/toto -s /bin/bash toto << FIN
pass
pass # confirmation
FIN

#des commandes après...
A noter que ce sont des doubles inférieurs, à ne pas confondre avec un simple inférieur qui redirige le contenu du fichier script.sh vers ton script
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
lordOric

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 50


Voir le profil
« #4 le: 16 Septembre 2006 à 17:42:19 »

Il me semble bien que l'une des deux commandes permet de préciser le mot de passe en paramètres (voir le man, mais par contre le compte est désactivé si je me souviens bien). Autre solution, utiliser expect qui permet d'interagir avec un script... interactif.

Bon, mon opinion, maintenant. Je n'aime pas le fait de pouvoir passer un mot de passe en paramètre. Expect est utile (dans le cas où le créateur du script ou du binaire n'a pas pensé qu'un outil Unix correctement constitué doit se contenter de ses paramètres ce qui permet de scripter le bazar). Mais, dans le cas d'expect comme pour un paramètre, ça signifie que le mot de passe va trainer un peu partout (dans l'historique du shell, dans les résultats de la crontab, etc...). Ce qui pose un sérieux problème de sécurité. Qui plus est, je me doute de ce que tu veux faire (mais je peux me tromper) et je voudrais pas d'un script qui créée automatiquement des utilisateurs sans que je sois prévenu.
Journalisée
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #5 le: 16 Septembre 2006 à 17:45:48 »

Citation
et je voudrais pas d'un script qui créée automatiquement des utilisateurs sans que je sois prévenu.
A mon avis, tu ne vois pas bien

Citation
voir le man, mais par contre le compte est désactivé si je me souviens bien)
Mouai j'ai lu ca dans le man d'un des deux, mais encore une fois, pas réussi à m'en servir correctement...

Citation
Expect est utile
Connait pas.


-------------------

Citation
les # étant des commentaires
Quand je mettais des #, ca precisait le mode root du shell et non les commentaires
Car pour le test, j'essaye sans scripting, directement sur le shell de faire le adduser, après j'implementerais dans mon script.
Et dans le shell, un adduser << pass me donne des >

Je vais tester ta methode de FIN
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Nebelmann

Profil challenge

Classement : 462/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #6 le: 16 Septembre 2006 à 20:54:53 »

le << tu le mets pas dans le shell mais dans ton script !!! je l'ai pourtant mis en gros !
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #7 le: 17 Septembre 2006 à 14:53:06 »

Ok ok je vais tester ca

----
Peu de temps après...
----

Voici donc ce que me donne le script user.sh :

Script :

Code:
adduser toto << FIN
test
test
FIN
On lance la commande :

Code:
serv:/# ./user.sh
Ajout de l'utilisateur toto...
Adding new group `toto' (1005).
Adding new user `toto' (1005) with group `toto'.
Création du répertoire personnel /home/toto.
Copie des fichiers depuis /etc/skel
Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not match
passwd : Authentication information cannot be recovered
adduser: `/usr/bin/passwd toto' returned error code 10.  Aborting.
Cleaning up.
Suppression du répertoire /home/toto
Suppression de l'utilisateur « toto ».
Suppression du groupe « toto ».
groupdel : le groupe toto n'existe pas
serv:/#
Conclusion, cette methode n'a pas l'air de fonctionner, dommage, j'y ai cru pendant un instant
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #8 le: 25 Septembre 2006 à 16:25:35 »

UP

Nebel, pas d'autres idées ??
Quelqu'un peut-il me venir en aide ????
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
lordOric

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 50


Voir le profil
« #9 le: 25 Septembre 2006 à 17:22:59 »

Citation de: Folcan
UP
Nebel, pas d'autres idées ??
Quelqu'un peut-il me venir en aide ????
Ton problème est que passwd attend deux entrées, et que la méthode du here-document ne fonctionnera pas dans ce cas. Je crois que tu n'as pas le choix : il va falloir utiliser expect.

Ps : si besoin, passe sur le chan irc un de ces soirs, on pourra regarder ça.
Journalisée
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #10 le: 26 Septembre 2006 à 08:45:13 »

Ok ba je vais fouiner de ce coté la.
Merci quand meme !

Bon alors d'après ce que j'ai lu sur le net (corriger moi si je me trompe), expect permet de recuperer une sortie et de renvoyer quelque chose.
La documentation FR avec des exemples est très tres legere sur le net ! Mise à part le man bien compliqué...

Donc d'après ce que j'ai compris, il faudrait faire un truc du genre :


Code:
expect "Enter Unix Password :"
send $password
expect "(re) Enter Unix Password :"
send $password
interact
Apparament faudrait mettre un spawn aussi avant, mais je n'en est pas bien compris encore l'utilité...
Mouarf, m'a l'air bien complexe ce expect....

Par contre j'ai remarqué que dans le useradd (contrairtement à adduser), on pouvais lui passer l'argument password sous la forme :
Code:
useradd -p $password (en rajoutant tous les arguments qui vont bien)
Cela est peut etre suffisant remarque.
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
lordOric

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 50


Voir le profil
« #11 le: 26 Septembre 2006 à 11:08:04 »

Citation de: Folcan
Donc d'après ce que j'ai compris, il faudrait faire un truc du genre :

Code:
expect "Enter Unix Password :"
send $password
expect "(re) Enter Unix Password :"
send $password
interact
Apparament faudrait mettre un spawn aussi avant, mais je n'en est pas bien compris encore l'utilité...
Mouarf, m'a l'air bien complexe ce expect....
C'est ce genre de truc, ouais. Maintenant, je l'ai jamais vraiment utilisé ce truc, donc j'aurais du mal à t'aider. Sinon, c'est complexe, mais il faut imaginer que ça peut émuler un être humain !! Hé oui.



Citation de: Folcan
Par contre j'ai remarqué que dans le useradd (contrairtement à adduser), on pouvais lui passer l'argument password sous la forme :
Code:
useradd -p $password (en rajoutant tous les arguments qui vont bien)
Cela est peut etre suffisant remarque.
Ca dépend du besoin. Dans mes souvenirs, ça créée un utilisateur dont le compte est inactif : à vérifier.

[Edit : oh le joli bug dans l'empilement des balises. C'est pas lisible, hein ? ]
Journalisée
Folcan

Profil challenge

Classement : 508/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #12 le: 26 Septembre 2006 à 13:23:32 »

Mouaip, mais on peu les activer en **orthographe !** un passwd juste derriere, mais je retomberais sur le meme probleme
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Nebelmann

Profil challenge

Classement : 462/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #13 le: 26 Septembre 2006 à 15:43:15 »

il me semble bien que la méthode avec <<bla fonctionne pour les commandes telles que adduser...
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Pages: [1]
  Imprimer  
 
Aller à: