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
    À 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. 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. 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