
🌐 También en: English · Deutsch · Français
Así que tienes una instancia de Nextcloud y quieres crear usuarios en lote como un sysadmin de verdad, ¿no? Aquí tienes una solución puramente en shell para crear usuarios a partir de un archivo CSV, asignarlos a grupos (incluso a varios) y sentirte el jefe mientras lo haces.
📦 Requisitos previos
- Acceso SSH a tu servidor Nextcloud
- Acceso por línea de comandos a
occ(está en la raíz de tu instalación de Nextcloud, p. ej./var/www/html/nextcloud) - Tu archivo CSV, listo para usar
📄 Formato del archivo CSV
Sin cabeceras, solo datos puros. Formato:
username,password,Display Name,Group1;Group2;Group3Ejemplo:
next001,secret123,Max Mustermann,Vorstand;Mitglieder
next002,test456,Lisa Beispiel,Trainer
next003,pass789,Peter Test,Trainer;Mitglieder🛠️ El script de Bash: create_users_with_groups.sh
<#!/bin/bash
CSV_FILE="benutzer.csv" # Path to your CSV file
cd /var/www/html/nextcloud || exit 1
# Read file line by line
while IFS=',' read -r username password displayname groups_raw; do
# Skip empty or malformed lines
if [[ -z "$username" || -z "$password" || -z "$displayname" ]]; then
echo "⚠️ Skipping invalid or empty line: $username, $displayname"
continue
fi
echo "▶️ Creating user: $username ($displayname)"
# Export password into environment
export OC_PASS="$password"
# Use -E to preserve environment for www-data
sudo -E -u www-data php occ user:add --password-from-env "$username" --display-name "$displayname"
USER_EXISTS=$?
if [ $USER_EXISTS -ne 0 ]; then
echo "❌ Failed to create user '$username'. Skipping group assignment."
continue
fi
# Split group list on semicolon (;) and trim whitespace
IFS=';' read -ra groups <<< "$groups_raw" for group in "${groups[@]}"; do group=$(echo "$group" | xargs) # Trim spaces if [ -n "$group" ]; then echo " ➕ Adding $username to group '$group'" # Create group if not already existing (ignore stderr) sudo -u www-data php occ group:add "$group" 2>/dev/null
# Add user to group
sudo -u www-data php occ group:adduser "$group" "$username"
fi
done
done < "$CSV_FILE"/code>⚙️ Uso
chmod +x create_users_with_groups.sh
./create_users_with_groups.shAsegúrate de que tu archivo benutzer.csv esté en el mismo directorio o ajusta la ruta según corresponda.
🔐 Notas
- Las contraseñas se pasan de forma segura mediante variables de entorno, no por la línea de comandos ni por stdin
- Los grupos se crean automáticamente si todavía no existen
- El punto y coma (
;) separa varios grupos por usuario
🧠 Consejo extra
¿Quieres pasar al modo automatización total? Intégralo en tus scripts de incorporación de usuarios, o aprovisiona tus usuarios vía LDAP y usa esto solo para cuentas especiales o temporales.
🫡 Logro de sysadmin desbloqueado
Eso es todo: tus usuarios ya están activos, organizados en grupos y listos para usar Nextcloud como profesionales. ¿Quieres configurar Group Folders y aplicar reglas de permisos? Avísame, que también me pongo en modo friki con eso.






