Useradd

Résolu
Bonjour,

Voilà, je vous explique rapidement, j'ai un pbm avec la création d'un utilisateur avec la commande useradd

useradd -d /home/$nameUser -m -g 1000 -s /bin/bash $nameUser


il me met
operateur binaire attendu


9 réponses

  1. Modérateur
    Personnellement j'aurais plutôt écrit un truc du genre :

    #!/bin/sh
    
    user="toto"
    if [ $(grep -c "^$user:" /etc/passwd) -eq 0 ] ; then
            echo "add"
    else
            echo "Cet utilisateur existe déjà" >&2
    fi


    Bonne chance
    1
    1. Modérateur
      À mon avis c'est ta variable $nameUser qui contient n'importe quoi.

      (root@aldur) (~) # useradd -d /home/tata -m -g 1000 -s /bin/bash tata
      (root@aldur) (~) # grep tata /etc/passwd
      tata:x:1006:1000::/home/tata:/bin/bash


      Bonne chance
      0
      1. CreateUser () 
        { 
         echo "Nom du nouvel utilisateur"; 
         read nameUser; 
         if [ Existe user $nameUser ] 
         then 
          echo "Cet utilisateur existe déjà !" 
         else 
          sudo useradd -d /home/$nameUser -m -g 1000 -s /bin/bash $nameUser 
         fi 
        }
        
        


        Je vois pas l'erreur. Dsl
        0
        1. Modérateur
          À première vue ça à l'air correct.

          (root@aldur) (~) # read nameUser
          tata
          (root@aldur) (~) # echo [$nameUser]
          [tata]
          (root@aldur) (~) # useradd -d /home/$nameUser -m -g 1000 -s /bin/bash $nameUser
          (root@aldur) (~) # grep tata /etc/passwd
          tata:x:1001:1000::/home/tata:/bin/bash


          Tu as peut-être un caractère invisible sur la ligne comportant useradd, essaye de l'effacer et de la retaper.

          Si je peux me permettre, attribuer le groupe primaire 1000 à un utilisateur n'est pas forcément une idée géniale car ce groupe correspond souvent au groupe primaire du premier utilisateur créé sur la machine.
          0
          1. je sais mais c'est un script que je fais pour les cours donc ca a pas énormément d'importance

            En tout cas, merci !
            0
            1. Modérateur
              C'était bien un caractère invisible ? Parce que l'initialisation de $userName semble correct (à vérifier avec un echo [$userName]).
              0
              1. J'ai toujours l'erreur, je pense qu'elle vient de ma fonction de test de l'existence de l'utilisateur ou de son appel.

                Je regarderais ca quand j'aurais 5 minutes !

                Existe ()
                {
                	case "$1" in
                		"user") grep "^$2:" /etc/passwd > /dev/null && return 0
                		return 1
                		;;
                		"group") grep "^$2:" /etc/group > /dev/null && return 0
                		return 1
                		;;
                		*)
                		echo "Option incorrecte."
                		;;
                	esac
                }
                0
                1. Je viens de trouver d'où vient cette erreur.
                  J'ai remplacé les crochets par des parenthèses et là miracle, plus d'erreur !
                  0
                  1. Modérateur
                    J'ai mon message d'hier soir qui est passé à la trappe, tu peux écrire ton test plus simplement grâce à l'option -c :

                    user=mando
                    if [ $(grep -c "^$user:" /etc/passwd) -eq 0 ] ; then
                        echo "add"  
                    else
                        echo "Cet utilisateur existe déjà" >&2
                    fi
                    


                    Bonne chance
                    0