it-swarm-eu.dev

Přidejte uživatele do systému * pouze pokud neexistuje *

Spustil jsem useradd {user} příkaz k přidání uživatelů do mého systému, i když plánuji spuštění v automatizovaném prostředí a může skončit opětovným spuštěním, přestože uživatel již existuje.

Existuje způsob, jak to spustit, pouze pokud uživatel již neexistuje? Uživatel nemá domovskou složku.

48
tarnfeld

id -u somename vrací nenulový výstupní kód, když uživatel neexistuje.

Můžete to jednoduše vyzkoušet ... (&>/dev/null pouze potlačí normální výstup/varování)

id -u somename &>/dev/null || useradd somename 
69
Peter.O

zkuste to:

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

nebo dokonce toto:

useradd {user} || true
15
sebaszw

Pokud nemáte jen malou hrstku systémů, kladete špatnou otázku. Odpověď není spouštět useradd vůbec, ale místo toho nechat tuto práci na řešení pro správu konfigurace, jako je loutka nebo kuchař. Umožní vám to centralizovat vaše uživatelské definice a zabránit vám ve spouštění smyček a používání ssh s uživateli root za účelem konfigurace vašich systémů. Vždy budete mít systémy ve známém stavu konfigurace.

Dokumentace pro loutky je k dispozici na http://docs.puppetlabs.com

Jako příklad v loutce:

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

useradd by uživatele nepřidal, pokud již existuje, má v úmyslu zajistit, aby uid number a uid login byly jedinečné. Pokud plánujete spustit dávku, ujistěte se, že použité uidy jsou jedinečné; useradd by si stěžoval na problematické položky a je třeba zachytit chyby/stderr, abyste zjistili, které uživatelské účty měly problémy se vstupem do systémů účtů (/ etc/passwd, group, shadow).

4
Nikhil Mulley