IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Besoin d'aide pour script en shell pour un novice


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 12
    Points
    12
    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

  2. #2
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par king_neo2001
    cree_user.sh [-p password] <user>

    Je te laisse continuer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 12
    Points
    12
    Par défaut
    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...

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 12
    Points
    12
    Par défaut
    pour les point 1 2 e 3 jai fai sa apres jsui bloker

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"

  5. #5
    Membre du Club Avatar de pymouse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    137
    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 : 137
    Points : 67
    Points
    67
    Par défaut
    Question 4 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    lis ton cours de shell car la ... hum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. besoin d'aide sur un tableau userforme pour inventaire
    Par isabelle.sanchez dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/05/2014, 15h52
  2. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    Réponses: 8
    Dernier message: 05/01/2004, 19h59
  3. aides pour script en shell
    Par komatek dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 12/08/2003, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo