it-swarm.com.de

Fügen Sie dem System einen Benutzer hinzu * nur wenn er nicht existiert *

Ich habe die useradd {user} Befehl zum Hinzufügen von Benutzern zu meinem System, obwohl ich vorhabe, dies in einer automatisierten Umgebung auszuführen, und es möglicherweise erneut ausgeführt wird, obwohl der Benutzer bereits vorhanden ist.

Gibt es eine Möglichkeit, dies nur auszuführen, wenn der Benutzer noch nicht vorhanden ist? Der Benutzer hat keinen Home-Ordner.

48
tarnfeld

id -u somename gibt einen Exit-Code ungleich Null zurück, wenn der Benutzer nicht existiert.

Sie können es ganz einfach testen ... (&>/dev/null unterdrückt nur die normale Ausgabe/Warnung)

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

versuche dies:

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

oder sogar das:

useradd {user} || true
15
sebaszw

Wenn Sie nicht nur eine kleine Handvoll Systeme haben, stellen Sie die falsche Frage. Die Antwort ist nicht, useradd überhaupt auszuführen, sondern diese Arbeit einer Konfigurationsverwaltungslösung wie Puppet oder Chef zu überlassen. Auf diese Weise können Ihre Benutzerdefinitionen zentralisiert werden und Sie können nicht für Schleifen ausgeführt werden und ssh mit Root-Benutzern verwenden, um Ihre Systeme zu konfigurieren. Sie haben immer Systeme in einem bekannten Konfigurationsstatus.

Die Dokumentation für die Puppe finden Sie unter http://docs.puppetlabs.com

Als Beispiel in Marionette:

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

useradd würde den Benutzer nicht erneut hinzufügen, wenn er bereits vorhanden ist. Er möchte sicherstellen, dass die UID-Nummer und die UID-Anmeldung eindeutig sind. Wenn Sie vorhaben, einen Stapel zu durchlaufen, stellen Sie sicher, dass die verwendeten Uids eindeutig sind. useradd würde sich über die problematischen Einträge beschweren und Sie müssen die Fehler/stderr erfassen, um zu sehen, welche Benutzerkonten Probleme beim Zugriff auf die Kontosysteme hatten (/ etc/passwd, group, shadow).

4
Nikhil Mulley