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 :

Script ajout d'utilisateurs


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Script ajout d'utilisateurs
    Voici un exercice linux que j'ai pu faire mais j'ai des erreurs que je comprends pas trop. Aidez-moi svp.

    ÉNONCE :

    Créez un script réalisant les tâches suivantes à partir d’un fichier texte contenant des logins, groupes
    et passwords séparés par des « ; » :
    1. Sans options, le script affiche une aide donnant les options possibles.
    2. L’option -f permet de préciser l’emplacement du fichier. Si l’option n’est pas utilisée, alors le
    script utilise par défaut le fichier « listing.txt » se trouvant dans le même répertoire que le
    script.
    3. L’option -d permet de choisir un séparateur autre que le « ; ».
    4. L’option -a permet d’ajouter de nouveaux logins/groupes/passwords dans le fichier. Ceux-ci
    sont demandés à l’utilisateur et ajoutés en fin de fichier.
    1. De plus, le script vérifie que les utilisateurs proposés ne soient pas déjà présents dans le
    fichier. Auquel cas, il demande un autre nom d’utilisateur.
    5. Avec l’option -e, le script crée les utilisateurs
    1. avec comme groupe principal et comme mot de passe, ceux précisés dans le fichier
    fourni.
    6. Lorsque le script rencontre une erreur, la valeur de retour est 1. Sinon, elle vaut 0.

    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
    #!/bin/bash
     
    fichier="/root/listusers.txt"
    sep=";"
    recommencer=1
     
    function adduser(){
        while [ $recommencer -eq 1 ]; do
            read -p "Entrez votre utilisteur comme suit : user,pass,groupe : " user 
            nom=$(echo $user | cut -d$sep -f1)
            recommencer=0
            while read line
            do
                verifnom=$(echo $line | cut -d$sep -f1)
                echo "Nom à vérifier : $verifnom"
                echo "Nom passé en paramètre : $nom"
                if [ "$verifnom" = "$nom" ]
                then
                    recommencer=1
                    echo "Erreur l'user est déjà dans la liste !"
                    break
                fi
            done < $fichier
            if [ $recommencer -eq 0 ]; then
                echo "$user" >> $fichier
            fi
        done
    }
     
    function creerusers (){
        while read line
        do
            name=$(echo $line | cut -d$sep -f1)
            pass=$(echo $line | cut -d$sep -f2)
            group=$(echo $line | cut -d$sep -f3)
            sudo groupadd $group
            sudo useradd $name -p "$pass" -g "$group"
            id $name
        done < $fichier
    }
     
    function aide (){
        echo "Texte d'aide ici..."
    }
     
    if [ $# -ne 0 ]; then
        if [ -e "$fichier" ]; then
            while getopts "s:f:ac" options
            do
                case $options in
                    s)
                        sep=$OPTARG;;
                    f)
                        echo "Test"
                        echo $OPTARG
                        if [ -f $OPTARG ]; then
                            fichier=$OPTARG
                        else
                            echo "Le fichier spécifié n'existe pas !"
                            exit -1
                        fi;;
                    a)
                        adduser;;
                    c)
                        creerusers;;
                    *)
                        echo "Option $* inconnue !"
                esac
            done
            exit 0
        else
            echo "Le fichier des users n'existe pas !"
            exit -1
        fi
    else
        echo "Veuillez entrer au moins un argument !"
        aide
        exit -1
    fi

    Un grand MERCI d'avance

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    j'ai des erreurs que je comprends pas trop
    et, il faut qu'on devine quelles sont les erreurs ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Nom : linuxerrors.PNG
Affichages : 2880
Taille : 7,7 Ko

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    tu as écrit ton script sur Windows ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Non. Sur linux (Debian)

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    avec une interface graphique ?
    entièrement sur Linux ? tu n'y as pas fait de modifications sur Windows ?

    tu peux nous montrer une capture de cat -A ./linux.sh, stp ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Je l'ai fait entièrement sur Linux (sans interface
    graphique )
    Pour la capture, Je vous La montrerai demain svp car j'ai déjà arrêté mon PC sur lequel j'ai travaillé parce que je dois dodo. Là je vous répond sur mon téléphone portable.
    Merci pour votre bienveillance.

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    C'est bien fait pour toi.
    Tu prétends avoir tout fait tout seul sous une console GNU Linux Debian.
    Mais quand on voit tes discussions, on voit bien que tu cherches à faire faire ton travail par les autres.
    Et tu as copié/collé un code venu d'on ne sait où ... qui ne fonctionne pas.
    Manifestement, il ne marche pas car tu as un problème d'encodage des caractères.
    Le "$" n'est pas compris, donc la variable $sep n'est pas remplacée, et le cut hurle que le séparateur ne lui convient pas. Tu n'as pas besoin de nous : il suffit de lire les messages d'erreurs.
    Le "\n" est un retour à la ligne. De la même façon, il y a un problème, et la console croit que 3 lignes sont une seule commande. Tu n'as pas besoin de nous : il suffit de lire les messages d'erreurs.


    Entre le code posté et les messages d'erreur, "restart" est devenu "recommencer" ... Tiens, Tiens ... Chercherait-on à maquiller son plagiat ?

    Un grand MERCI d'avance
    "Merci", c'est à la fin. Au début, c'est "S'il vous plaît". La signification de ta phrase est "Merci mon chien". Et cela n'a rien d'une formule de politesse.

    Merci pour votre bienveillance.
    Généralement, nous sommes bienveillants avec les gens qui bossent.
    Je ne vais pas te copier/coller le règlement dans toutes tes discussions !
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Entre le code posté et les messages d'erreur, "restart" est devenu "recommencer" ... Tiens, Tiens ... Chercherait-on à maquiller son plagiat ?
    Je ne cherche pas à maquiller mon soit disant plagiat car c'est mon travail. j'ai juste changer recommencer par "restart" car il me semble court à l'écrire et plus idéal. Si je cherchais à modifier comme vous le prétendait j'allais aussi modifier "sep", "fichier", "adduser", "verifname",etc... par je ne sais quoi. Il serait con de modifier juste recommencer pour maquiller mon soit disant plagiat donc je suis navré je cherche juste à trouver ce qui ne va pas avec mon code.

    Citation Envoyé par Flodelarab Voir le message
    "Merci", c'est à la fin. Au début, c'est "S'il vous plaît". La signification de ta phrase est "Merci mon chien". Et cela n'a rien d'une formule de politesse.
    Mon Merci est à la fin et mon SVP est au début. Je ne vois pas de quoi vous parler sincèrement.

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut


    je peux avoir ma capture, svp !?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Salut,
    On peut peut être commencer par le 1:
    1. Sans options, le script affiche une aide donnant les options possibles.
    Tu propose quoi ?
    cordialement.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par N_BaH Voir le message


    je peux avoir ma capture, svp !?
    Nom : immaa.PNG
Affichages : 2939
Taille : 17,0 Ko

    ça va trop vite j'arrive pas à capturer le debut et je sais pas defiler vers le haut malheureusement.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2018
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Durant la journée, j'ai essayé de travailler avec un ami et on a fait plus simple.

    Voici ce qu'on a proposé:

    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
    #!/bin/bash
     
    delim=';'
    file=listing.txt
     
    erreur(){
    			echo
    			echo "Utilisation de $0 : [-f <string>] [-d <char>] [-a] [-e]"
    			echo
    			echo -e "\t-f : définit l'argument comme nouveau fichier"
    			echo -e "\t-d : définit délimiteur"
    			echo -e "\t-a : ajoute une entrée au fichier"
    			echo -e "\t-e : crée les utilisateurs"
    			echo
    		}
     
    while getopts "f:d:ae" option
    do
    	case $option in
     
    	f)file=$OPTARG
    	  ;;
    	d)delim=$OPTARG
    	  ;;
     
    	a)echo -n Login :
    	  read pseudo
    	  while read line
    	  do
    		if [ $pseudo = $(echo $line | cut -d$delim -f1) ]
    		then
    			echo -e "Nom d'utilisateur déjà utilisé. Veuillez en choisir un autre"
    			exit 1
    		fi
    	  done < $file
    	  echo -n Groupe :
    	  read groupe
    	  echo -n Mot de passe :
    	  read password
    	  echo $pseudo$delim$groupe$delim$password > var1
    	  cat $file var1 > var2
    	  mv var2 $file
    	  rm var1
    	  exit 0;;
     
    	e)while read line
    	do
    		groupadd -f $(echo $line | cut -d$delim -f2)
    		useradd $(echo $line | cut -d$delim -f1) -g $(echo $line | cut -d$delim -f2) -p $(echo $line | cut -d$delim -f3)
    	done < $file
    	exit 0;;
     
    	*)echo erreur
    	  exit 1;;
     
    	esac
    done
    erreur
    exit 0

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    et, du coup, tu n'as plus les mêmes erreurs ?

    parce que c'est pas tout de balancer du code, il faut dire ce qu'il se passe, ou pas, et s'il y a des erreurs, donner le texte précis du message d'erreur.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Mon Merci est à la fin et mon SVP est au début. Je ne vois pas de quoi vous parler sincèrement.
    "Merci d'avance" n'est pas poli.

    Voici ce qu'on a proposé:
    Même question, même réponse.
    Les messages d'erreurs ne sont pas forcément inexploitables.
    Il faut les lire !

    ça va trop vite j'arrive pas à capturer le debut et je sais pas defiler vers le haut malheureusement.
    C'est une blague ? Tu copies/colles le script directement dans la console ?
    Je te suggère d'utiliser un tutoriel pour apprendre la base. (mettre le texte dans un fichier texte plat, enregistrer le fichier, le rendre exécutable, et l'exécuter)
    À ce moment-là, tu pourras utiliser la commande less pour pouvoir défiler dans le texte "trop long" comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_script_rendu_executable.bash 2>&1 | less
    ("q" pour quitter less)

    soit disant plagiat
    L'expression, c'est "soi-disant". Ce que quelqu'un dit de lui-même.
    Comme ton script ne se qualifie pas lui même, tu ne peux pas utiliser cette expression.
    "prétendu plagiat" est meilleur.

    Comme N_BaH, j'attends les messages d'erreurs.
    Mais j'ai quand même un peu de mal avec cette ligne qui a accroché mon œil au passage.
    Tu ne feras rien d'autre que d'afficher le mot "erreur" à l'écran.
    Alors que le fonction d'erreur (prévue à cet effet) n'est pas exécutée.
    Et dans le même temps, la fonction erreur est exécutée, dans tous les cas, en fin de script.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Comme N_BaH, j'attends les messages d'erreurs.
    Mais j'ai quand même un peu de mal avec cette ligne qui a accroché mon œil au passage.
    Tu ne feras rien d'autre que d'afficher le mot "erreur" à l'écran.
    Alors que le fonction d'erreur (prévue à cet effet) n'est pas exécutée.
    Et dans le même temps, la fonction erreur est exécutée, dans tous les cas, en fin de script.
    De plus, il serait de bon gout d'afficher les erreurs sur la sortie d'erreur et non la sortie standard.

    Un autre détail qui m' hérisse le poil et que l'on rencontre dans pratiquement tous les scripts en shell:
    une suite de commandes echo (ou autre) au lieu de n'en faire qu'une seule et unique. Bon ici, ce n'est pas trop grave car on ne boucle pas n fois sur cette série mais dans l'absolu, c'est jute un confort pour le développeur, mais certainement pas une bonne pratique.
    Cordialement.

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Yvano_123 Voir le message
    ça va trop vite j'arrive pas à capturer le debut et je sais pas defiler vers le haut malheureusement.
    Comme Flodelarab (et d'autres), je crois que ce serait profitable pour toi (et pour faciliter l'aide qu'on peut t'apporter) que tu apprennes à te servir du terminal!

    Je suis sous un Unix qui n'est pas linux, mais je suis certain que la fenêtre qui te sert de Terminal a ou peut avoir des scrollbar qui te permettront de remonter dans les lignes affichées.
    De plus, il est très certainement possible de sélectionner le texte à la souris et de le copier pour le coller tel quel (texte entre balises QUOTE et non image/copie d'écran) dans un post de developpez.net.
    Il y a peut-être à régler une option du Terminal pour afficher/retirer les scrollbars ou pour choisir le nombre de lignes mémorisées (par exemple, chez moi, je limite à 10000 lignes).

    D'autres (ou google) pourront probablement t'aider à franchir ce premier pas si tu indiques quelle distribution linux et quel Terminal tu utilises.

  18. #18
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    messages #5 et #7 :
    Debian [...] sans interface graphique
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. créer un script d'ajout d'utilisateur
    Par Sfaxiano dans le forum MySQL
    Réponses: 5
    Dernier message: 14/04/2010, 15h37
  2. scripts d'ajout d'utilisateur
    Par samsoft78 dans le forum Linux
    Réponses: 5
    Dernier message: 05/11/2007, 11h45
  3. script pour ajouter des utilisateurs postgres
    Par xopos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 16/08/2004, 10h49

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