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. 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
      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
        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.
          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 !
            1. Modérateur
              C'était bien un caractère invisible ? Parce que l'initialisation de $userName semble correct (à vérifier avec un echo [$userName]).
              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
                }
                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 !
                  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