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