Es ist sehr aufwändig, wenn ihr mehrere Benutzer von Hand anlegen wollt. Daher bietet Nextcloud die Möglichkeit, mehrere Benutzer per Skript anlegen zu lassen. Wie das funktioniert zeige ich hier.
Zuerst legt ihr euch eine Datei an, in der ihr alle Benutzer eintragt, welche angelegt werden sollen. Die Datei sollte so aufgebaut sein. In jeder Zeile ein Benutzer.
Vorname Nachname;nutzername1;Gruppe1 Vorname Nachname;nutzername2;Gruppe2
Da wir alle Kennwörter automatisiert erstellen lassen wollen, müssen wir uns noch einen Passwortgenerator installieren.
apt-get install pwgen
Nun können wir auch schon mit dem eigentlichen Skript beginnen.
Dieses Skript müsst ihr in eine neue Datei kopieren und die Pfade entsprechend anpassen.
Skript, welches Benutzer in eine Gruppen einfügen kann
#!/bin/bash var_datum=$(date +"%Y%m%d") var_user_file= Pfad zu eurer Datei mit Nutzernamen, die wir eben angelegt haben var_web_user=www-data var_path_nextcloud=Pfad zur eurer Nextcloud var_result_file="${var_datum}_user_create.txt" while read -r line do var_password=$(pwgen 12 -c -n -N 1) set -e export OC_PASS=$var_password var_username=$(echo "${line}" | cut -d";" -f2) var_name=$(echo "${line}" | cut -d";" -f1) var_group=$(echo "${line}" | cut -d";" -f3) su -s /bin/sh ${var_web_user} -c "php ${var_path_nextcloud}/occ user:add ${var_username} --password-from-env --group='${var_group}' --display-name='${var_name}'" echo "Benutzer ${var_username} wurde mit Passwort ${var_password} erstellt" >> "${var_result_file}" done < $var_user_file
Skript, welches Benutzer in mehrere Gruppen einfügen kann
#!/bin/bash var_datum=$(date +"%Y%m%d") var_user_file= Pfad zu eurer Datei mit Nutzernamen, die wir eben angelegt haben var_web_user=www-data var_path_nextcloud=Pfad zur eurer Nextcloud var_result_file="${var_datum}_user_create.txt" while read -r line do var_password=$(pwgen 12 -c -n -N 1) set -e export OC_PASS=$var_password var_username=$(echo "${line}" | cut -d";" -f2) var_name=$(echo "${line}" | cut -d";" -f1) var_group=$(echo "${line}" | cut -d";" -f3) var_group2=$(echo "${line}" | cut -d";" -f4) var_group3=$(echo "${line}" | cut -d";" -f5) su -s /bin/sh ${var_web_user} -c "php ${var_path_nextcloud}/occ user:add ${var_username} --password-from-env --group='${var_group}' --group='${var_group2}' --group='${var_group3}' --display-name='${var_name}'" echo "Benutzer ${var_username} wurde mit Passwort ${var_password} erstellt" >> "${var_result_file}" done < $var_user_file
Es wird also lediglich beliebig oft folgende Zeile hinzugefügt zum Skript:
var_groupX=$(echo "${line}" | cut -d";" -fX) und entsprechend in Zeile 17 angepasst.
Die Datei mit den Nutzern muss folgendermaßen abgeändert werden:
Vorname Nachname;nutzername1;Gruppe1;Gruppe2;... Vorname Nachname;nutzername2;Gruppe2;Gruppe3;...
Skript ausführbar machen
Diese Datei müsst ihr nun noch ausführbar machen. Dazu gebt ihr folgendes ein:
chmod +x Skriptname
Nun könnt ihr das Skript starten
./Skriptname
Im selben Verzeichnis sollte nun eine Datei sein, welche euch die Passwörter der Nutzer anzeigt:
Benutzer test2 wurde mit Passwort roob7shie3Sh erstellt
Benutzer test3 wurde mit Passwort XaiFoh1Ao1ah erstellt
Benutzer test4 wurde mit Passwort Kah5vie5Ingi erstellt
Too many arguments, expected arguments “command” “uid”.
user:add [–password-from-env] [–display-name [DISPLAY-NAME]] [-g|–group [GROUP]] [–]
Skript sieht so aus:
#!/bin/bash
var_datum=$(date +”%Y%m%d”)
var_user_file=/mnt/NC_User.txt
var_web_user=www-data
var_path_nextcloud=/mnt/nextcloud
var_result_file=”${var_datum}_user_create.txt”
while read -r line
do
var_password=$(pwgen 12 -c -n -N 1)
set -e
export OC_PASS=$var_password
var_username=$(echo “${line}” | cut -d”;” -f2)
var_name=$(echo “${line}” | cut -d”;” -f1)
var_group=$(echo “${line}” | cut -d”;” -f3)
var_group2=$(echo “${line}” | cut -d”;” -f4)
su -s /bin/sh ${var_web_user} -c “php ${var_path_nextcloud}/occ user:add ${var_username} – password-from-env – group=’${var_group}’ – group=’${var_group$
echo “Benutzer ${var_username} wurde mit Passwort ${var_password} erstellt” >> “${var_result_file}”
done < $var_user_file