Useradd

Résolu/Fermé
Harrys - Modifié par Harrys le 19/01/2011 à 23:02
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 21 janv. 2011 à 00:05
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

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
20 janv. 2011 à 00:46
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 janv. 2011 à 23:04
À 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
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 janv. 2011 à 23:16
À 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 janv. 2011 à 23:22
C'était bien un caractère invisible ? Parce que l'initialisation de $userName semble correct (à vérifier avec un echo [$userName]).
0
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
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 janv. 2011 à 00:05
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