Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/05/2007, 17h44   #1
Invité de passage
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 2
Points : 2
Par défaut Besoin d'aide pour script en shell pour un novice

Bonjour j'ai un souci
je doit créer un script qui cré un utilisateur UNIX de maniere simple en respectant les contraintes exposé au fur a mesure des question ci-dessous. IL EST INTERDIT D'APPELER LA COMMANDE USERADD. le fichier /etc/passwd doit etre rempli par le script
cree_user.sh [-p password] <user>
/etc/passwd : login:UID:GID:commentaire:homedir:shell
/etc/group: loginGID:

Question 1
Gérez les parametres passés au script(S#,$1,etc).Ne proposez pas de saisie,ne placez pas ces valeurs a l'avance dans les variables. En cas de présence d'un seul paramètre c'est forcement le nom d'utilisateur a créer, le placer dans une variable appelée <<NUSER>>. S'il y a trois parametres alors celui situé apres le -p(pour password) est le mot de passe de l'utilisateur, le placer dans une variable PASSWD. Le -p peut etre placé en premier mais aussi apres le nom de l'utilisateur autrement dit l'ordre des parametres n'a pas d'importance

Question 2
Modifiez ou ajouter la gestion des erreurs au bloc précedent : le script quitte avec une erreur si le nom d'utilisateur n'est pas precisé. Si le mot de passe est absent il es fixé par défaut a password

Question 3
un nom d'utilisateur ne doit pas depasser huit caractere. Si le nom depasse 8 caractere quittez avec une erreur.

Question 4
Verifiez si l'utilisateur existe deja (presence dans /etc/passwd)

Question 5
Calculez un UID pour l'utilisateur. Trouvez l'UID le plus élevé dans /etc/passwd et lui ajouter 1. Placer cette valeur dans une variable <<NUID>>. Exclure la recherche de l'utilisateur nobody qui a souvent l'UID le plus elevé.

Question 6
Le groupe par défaut de l'utilisateur sera <<Users>>. Il existe déjà. placé le GID du groupe <<Users>> dans une variable <<NGID>>.

Question 7
Construisez dans une variable <<LIGNE>> la ligne qui sera ajoutée a /etc/passwd. Le shell utiliser est <</bin/bash>>. Le repertoire personnel /home/$NUSER. Le commentaire <<Utilisateur $NUSER>> et le mot de passe reste a << x >>. Ajouter cette ligne a la fin du fichier /etc/passwd. Pour mettre a jour automatiquement le fichier /etc/shadow lancez ensuite la commande << pwconv>>

Question 8
créez le mot de passe de l'utilisateur : utiliser la commande <<passwd>>, en lisant son manuel et notamment le parametre <<--stdin>>. Aucune question ne doit etre posée.

Question 9
Créer enfin le repertoire personnel de l'utilisateur /home/$NUSER. Deux cas peuvent se présenter; Si le repertoire existe deja changer le proprietaire de ce repertoire et de tout son contenu pour qu'il appartienne a l'utilisateur et au groupe <<users>>. S'il n'existe pas créé le recopiez tous les fichiers contenus dans /etc/skel dedans et changer le proprietaire et le groupe de l'ensemble.


Je me rends bien compte que ce travail est longt et contraignant mais croyez moi que si je me permet de poster sur le forum c'est que linux j'en ai fait une fois et je suis totalement incapable de faire ce script et il compte pour un projet.

Meme si vous ne pouvez pas m'aider a tout faire et que vous savez faire une des questions faites le je vous en serais reconnaissant car la je suis vraiment plus profond que terre.

Merci d'avance en tout cas.
Cordialement
king_neo2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 22h48   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par king_neo2001
cree_user.sh [-p password] <user>

Je te laisse continuer

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
if [[ $# -eq 0 || $# -gt 3 ]] ; then
	echo "*** syntaxe : blabla "
	exit 1
fi 
 
Password=""
User=""
ind=1
TotVar=$#
 
while [[ $ind -le $TotVar ]] 
do
	Var=$1
	case $Var in
		-p) 
		shift
		((ind=ind+1))
		Password=$1
		echo "Password \"$Password\" !!!"
		;;
		*) 
		User=$1
		echo "User \"$User\" !!!"
		;;
	esac
	((ind=ind+1))
done
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 16h01   #3
Invité de passage
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 2
Points : 2
Je te remercie pour ta réponse mais la en fait je comprend pa ton script franchement je suis pire qu'un nul en shell linux et la je vois pas du tout ce que sa fait. Quelle son les parties de mon sujet que tu a traité dans ton exemple?

Vraiment desole de t'ennnuyer avec mes questions car ce que tu m'a donné c'est vraiment sympa mais j'aimerais du moin comprendre a quoi sa correspond...
king_neo2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 18h52   #4
Invité de passage
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 2
Points : 2
pour les point 1 2 e 3 jai fai sa apres jsui bloker

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 #! /bin/sh
 
if  [ $# -ne 1 || $# -ne 3]
then
    echo "Mauvais nombre de paramètres"  >&2
    exit 1
fi
 
if [ $# -e 1 ]
then
    NUSER = $1
fi
 
if [ $# -e 3 ]
    if [ $1 -e -p ]
        if [expr $3 : ".*" > 8]
                exit 2
        fi
        PASSWD = $2
        NUSER = $3
    fi
    if [ $2 -e -p ]
        NUSER = $1
        if [expr $3 : ".*" > 8]
                exit 2
        fi
        PASSWD = $3
    fi
fi // dans le cas présent, PASSWD est forcement saisi, il n'y a donc pas à le fixer par défaut à "password"
king_neo2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 10h37   #5
Nouveau Membre du Club
 
Avatar de pymouse
 
Homme
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 128
Points : 36
Points : 36
Question 4 :

Code :
1
2
3
4
5
6
7
 
if more "/etc/passwd" | grep -q $NUSER
    then	
	echo "L'utilisateur existe!"
else
	echo "L'utilisatuer n'existe pas!"
fi
Question 9 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if test -d /home/$NUSER ; then
  echo "répertoire existant"
  #changement des droits
  chown -R $NUSER /home/$NUSER
  #chown -R $NUSER:Users /home/$NUSER <- avec le group Users
else
  #recopie et création du dossier
  cp -r /etc/skel /home/
  mv /home/skel /home/$NUSER
  #Droits
  chown -R $NUSER /home/$NUSER
fi
Voila je ne suis pas non plus un pro du bash, mais j'espere que cela va t'aider un peu
pymouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 16h18   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
lis ton cours de shell car la ... hum
Code :
1
2
3
4
5
6
7
8
 
if  [ $# -ne 1 || $# -ne 3] .....
# cela s'ecrit aujourd'hui en bash ou korn shell
if (( $# != 1 || $# != 3 )) ....
 
 
if [ $# -e 1 ] # sa n'existe pas .........
if (( $# == 1 )) # je suppose
et puis execute au moins une fois ce que tu ecris.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h59.


 
 
 
 
Partenaires

Hébergement Web