Shell-Logik: Wie man Benutzer/Gruppe erstellt, wenn kein Benutzer/keine Gruppe mit dieser UID/GID existiert

Der folgende Bash-/Shell-Schnipsel ist ein Beispiel, wie man einen Benutzer und eine Gruppe erstellt, wenn noch kein Benutzer/keine Gruppe mit dieser UID/GID existiert:

Wie man eine Gruppe erstellt, wenn keine Gruppe mit dieser GID existiert

create_user_group.sh
getent group $GID || groupadd --gid $GID $USERNAME

Wie man einen Benutzer erstellt, wenn kein Benutzer mit dieser UID existiert

create_user_if_not_exists.sh
getent passwd $UID || useradd --uid $UID --gid $GID -m $USERNAME

Wie es funktioniert

getent_group_example.sh
$ getent group 1000
myuser:x:1000:
$ echo $?
0

falls keine solche Gruppe existiert:

getent_group_not_found_example.sh
$ getent group 12345
$ echo $?
2

Danach verwenden wir ||, um den groupadd-Befehl nur auszuführen, wenn getent einen Non-Zero-Exit-Code zurückgibt (d.h. die Gruppe nicht existiert).

Wie man das in sein Skript einbindet

Verwenden Sie Klammern, wenn Sie diesen Befehl in einer &&-Kette verwenden, um unerwartetes Verhalten zu vermeiden.

Beispiel:

create_user_group_conditional.sh
# Create user/group only of no such user/group exists
(getent group $gid || groupadd --gid $gid $USERNAME) \
 && (getent passwd $uid || useradd --uid $uid --gid $gid -m $USERNAME) \
 && echo "Created user & group or used existing ones"

Check out similar posts by category: Linux