52 lines
1.7 KiB
Bash
52 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Funktion zur Ermittlung der nächsten verfügbaren UID oder GID oberhalb von 8000
|
|
get_next_id() {
|
|
local id_type="$1"
|
|
local current_max_id="$2"
|
|
local min_id=8001
|
|
|
|
if [ -z "$current_max_id" ]; then
|
|
echo "$min_id"
|
|
else
|
|
local next_id=$((current_max_id + 1))
|
|
if [ "$next_id" -lt "$min_id" ]; then
|
|
next_id="$min_id"
|
|
fi
|
|
echo "$next_id"
|
|
fi
|
|
}
|
|
|
|
# Nach dem Präfix für Benutzer und Gruppen fragen
|
|
read -p "Geben Sie das Präfix für Benutzer und Gruppen ein: " prefix
|
|
|
|
# Nach der Anzahl der zu erstellenden Benutzer fragen
|
|
read -p "Geben Sie die Anzahl der zu erstellenden Benutzer ein: " num_users
|
|
|
|
# Die aktuell größte vorhandene UID und GID ermitteln
|
|
current_max_uid=$(getent passwd | awk -F':' '$3 >= 8000 {print $3}' | sort -n | tail -1)
|
|
current_max_gid=$(getent group | awk -F':' '$3 >= 8000 {print $3}' | sort -n | tail -1)
|
|
|
|
echo "Aktuell größte vorhandene UID: $current_max_uid"
|
|
echo "Aktuell größte vorhandene GID: $current_max_gid"
|
|
|
|
# Benutzer und Gruppen erstellen
|
|
for ((i=1; i<=num_users; i++))
|
|
do
|
|
# Benutzername mit zweistelliger Nummer erstellen
|
|
username="${prefix}$(printf "%02d" $i)"
|
|
groupname="${prefix}$(printf "%02d" $i)"
|
|
|
|
# Nächste verfügbare UID und GID ermitteln
|
|
next_uid=$(get_next_id "UID" "$current_max_uid")
|
|
next_gid=$(get_next_id "GID" "$current_max_gid")
|
|
|
|
# Benutzer und Gruppe erstellen
|
|
sudo groupadd -g "$next_gid" "$groupname"
|
|
sudo useradd -m -u "$next_uid" -g "$groupname" "$username"
|
|
|
|
echo "Benutzer '$username' mit UID $next_uid und Gruppe '$groupname' mit GID $next_gid wurde erstellt."
|
|
done
|
|
|
|
echo "Die Benutzer und Gruppen wurden erstellt."
|