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 :

Problème de script samba


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 31
    Par défaut Problème de script samba
    Bonjour à tous,

    Je suis en BTS IG option Réseau et j'ai concu un script qui permet l'ajout d'un utilisateur samba et l'ajout d'une machine samba, pour mon domaine samba.

    Mais j'ai un problème sur mon script
    EXPLICATION:
    Lorsque je lance mon script le menu s'affiche, donc je peut choisir:
    1-Créer un utilisateur samba
    2-Créer une machine samba
    3-Quitter

    Si, par exemple je tape1, je peut créer un utilisateur cela fonctionne, et à la fin de cette création je propose d'en créer un nouveau (cela fonctionne), ou bien de retourner dans le menu (cela fonctionne).
    Lorsque je retourne dans le menu, j'ai toujours les 3 choix.
    Si je choisi de quitter (c'est OK), mais si je chois 1 ou 2 le menu boucle sur lui même, et je n'arrive plus à entrer dans les fonctions de création.

    Voici mon script

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    #! /bin/sh
     
    ###############################################################
    function ajout_utilisateur ()
    {
    echo "saisir un nom d'utilisateur"
    read user
    c=0
    if grep $user /etc/passwd 
    	then
    	c=1			
    	echo "l'utilisateur $user est déjà  défini"
    	echo ""
    	else
    	c=2
    	echo "l'utilisateur $user n'est pas défini"
    	echo ""
    fi
     
    if [ $c -eq 1 ]
    	then
    	echo "saisir le nouveau mot de passe de l'utilisateur $user"
    	smbpasswd -a $user
    	else
    	useradd -m $user
    	smbpasswd -a $user
    fi
    }
     
    function ajout_machine ()
    {
    echo "saisir un nom de machine"
    echo "ATTENTION: bien préciser le $ à  la fin du nom de la machine"
    read machine
    c=0
    if grep $machine /etc/passwd
    	then
    	c=1
    	echo "la machine est déjà  défini"
    	else
     
    	c=2
    	echo "la machine n'est pas défini"
    fi
    if [ $c -eq 1 ]
    	then
    	echo ""
    	smbpasswd -m -a $machine
    	else
    	useradd $machine
    	smbpasswd -m -a $machine
    fi
    }
     
     
     
    ###############################################################
    ok="o"
    choix=0
    while [ $choix -ne 3 ]
    do
    	echo "-------------------MENU---------------------"
    	echo "Bienvenue dans la configuration SAMBA"
    	echo "1- Créer un utilisateur"
    	echo "2- Créer un compte machine"
    	echo "3- Quitter le programme"
    	echo ""
     
    	echo "Faites votre choix:"
    	read choix
    	while [ $choix -eq 1 ] || [ $choix -eq 2 ] && [ $ok == "o" ]
    	do
    		if [ $choix -eq 1 ] && [ $ok == "o" ]
    			then
    			ajout_utilisateur
    			echo "voulez-vous créer un nouvel utilisateur ? o/n"
    			read ok
    		fi
    		if [ $choix -eq 2 ]
    			then
    			ajout_machine
    			echo "voulez-vous créer une nouvelle machine ? o/n"
    			read ok			
    		fi
    		if [ $choix -eq 3 ]
    			then
    			echo "fin du programme"
    			ok="n"
    		fi		
    	done
    done
    J'espère ne pas être flou dans mes explications.

    Merci à tous!!!!

    A bientôt.

  2. #2
    Membre chevronné Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Par défaut
    Initialise ta variable $ok à "o" dans le première boucle.
    Parce que lorsque tu quittes la création, $ok passe a autre chose que "o" et n'est jamais réinitialisé.

    La condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ $choix -eq 1 ] || [ $choix -eq 2 ] && [ $ok == "o"]
    n'est plus jamais vrai.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 31
    Par défaut
    D'accord, mais je l'initialise dans mes chaque fonctions, ou bien dans le programme principale après la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while [ $choix -eq 1 ] || [ $choix -eq 2 ] && [ $ok == "o" ] 
    do
    merci à toi pour cette solution, par contre je ne peux tester cela maintenant, je teste demain.


  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 31
    Par défaut
    Bonjour,

    je viens de tester, et l'initialisation de la variable ok ne change rien.
    C'est sur que c'est une erreur à 2 balle ,mais jtrouve pas!!!


    Merci!!



  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Désolé d'insister dessus mais je suis d'accord avec Pilru, le problème vient de ton initialisation de ta variable "ok".

    je t'explique pourquoi : tant que tu veux soit créer un nouveau user ou une nouvelle machine, tu pourras rentrer dans ta boucle car $ok="o". Seulement lorsque tu répondras à ta question "voulez-vous créer un nouvel utilisateur/machine ? o/n" et que tu réponds "n", forcément tu va boucler sur ton menu car tu ne pourras plus rentrer dans ton deuxième while.

    Donc la solution est d'au lieu initialiser ta variable "ok" avant ton premier while fais le juste après.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while [ $choix -ne 3 ]
    do
          ok="o"
          ......
    done
    voila tiens nous au courant

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Je ne pense pas que ça marche non plus car le problème est que dès qu'on répond Non à la question de créer un nouvel utilisateur, $ok est à "n" et il ne rentrera plus dans le while imbriqué. Utilise plutôt la commande break pour sortir de tes boucles au lieu d'un flag

    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
    30
    31
    choix=0
    while true 
    do
        echo "-------------------MENU---------------------"
        echo "Bienvenue dans la configuration SAMBA"
        echo "1- Créer un utilisateur"
        echo "2- Créer un compte machine"
        echo "3- Quitter le programme"
        echo ""
     
        echo "Faites votre choix:"
        read choix
        if [ $choix -eq 3 ]; then break; fi
        while true  
        do  
            if [ $choix -eq 1 ] 
                then
                ajout_utilisateur
                echo "voulez-vous créer un nouvel utilisateur ? o/n"
                read nouveau
                if [ $nouveau == "n" ]; then break; fi
            fi
            if [ $choix -eq 2 ] 
                then
                ajout_machine
                echo "voulez-vous créer une nouvelle machine ? o/n"
                read nouveau
                if [ $nouveau == "n" ]; then break; fi
            fi
        done
    done

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Problème test script
    Par masseur dans le forum Langage
    Réponses: 6
    Dernier message: 03/12/2005, 18h48
  2. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43
  3. [Débutant] Problème de Script
    Par FREMY dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 14h00
  4. [MS-DOS] Problème avec Script
    Par bliml dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 24/05/2005, 13h52
  5. [DOS] Problème de script bat
    Par Philzegore dans le forum Windows
    Réponses: 3
    Dernier message: 04/04/2005, 12h35

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