Ajouter un user au système * seulement s'il n'existe pas *

J'ai exécuté la command useradd {user} pour append des users à mon système, bien que je prévoie de l'exécuter dans un environnement automatisé, et que cela risque de se répéter même si l'user existe déjà.

Existe-t-il un moyen que je puisse exécuter ceci uniquement si l'user n'existe pas déjà? L'user n'a pas de dossier de départ.

id -u somename renvoie un code de sortie différent de zéro lorsque l'user n'existe pas.

Vous pouvez le tester tout simplement … ( &>/dev/null supprime simplement la sortie / avertissement normal)

 id -u somename &>/dev/null || useradd somename 

À less que vous ayez seulement une petite poignée de systèmes, vous posez la mauvaise question. La réponse est de ne pas exécuter useradd du tout, mais plutôt laisser ce travail à une solution de gestion de configuration comme marionnette ou chef. Cela permettra de centraliser vos définitions d'user et vous empêchera d'exécuter des loops et d'utiliser ssh avec les users root afin de configurer vos systèmes. Vous aurez toujours des systèmes dans un état de configuration connu.

La documentation de la marionnette est disponible à http://docs.puppetlabs.com

À titre d'exemple dans la marionnette:

 user { "bob" : password => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1` ensure => present, # ensure => absent to remove managehome => true, } 

useradd n'ajoute pas l'user s'il existe déjà, il a l'intention de s'assurer que le numéro de l'uid et la connection de l'uid sont uniques. Si vous envisagez de parcourir un lot, assurez-vous que les uids utilisés sont uniques; useradd se plaindrait des inputs problématiques et vous devez capturer les erreurs / stderr pour voir quels counts d'users ont eu des problèmes pour entrer dans les systèmes de count (/ etc / passwd, group, shadow).

essaye ça:

 useradd {user} || echo "User already exists." 

ou même ceci:

 useradd {user} || true