NextcloudSNT/setup_complet_snt.sh
2025-08-20 08:33:48 +00:00

128 lines
No EOL
4.9 KiB
Bash

#!/bin/bash
# setup_complet_snt.sh - Architecture élèves + prof séparés
NEXTCLOUD_DATA="/var/www/html/nextcloud/data"
NEXTCLOUD_ROOT="/var/www/html/nextcloud"
PROF_USERNAME="profsnt"
# Vérification qu'on est root
if [[ $EUID -ne 0 ]]; then
echo "Ce script doit être exécuté en tant que root"
exit 1
fi
# Vérification que le compte prof existe
if [[ ! -d "$NEXTCLOUD_DATA/$PROF_USERNAME" ]]; then
echo "❌ Erreur: Compte enseignant '$PROF_USERNAME' introuvable"
exit 1
fi
echo "🚀 Création des comptes et structure SNT v2"
# Créer le groupe "eleves" s'il n'existe pas
if ! sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:list | grep -q "eleves"; then
sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:add eleves
echo "👥 Groupe 'eleves' créé"
else
echo "👥 Groupe 'eleves' existe déjà"
fi
# Créer le fichier comptes_crees.csv seulement s'il n'existe pas
if [[ ! -f "comptes_crees.csv" ]]; then
echo "Username,Password,Email,Classe" > comptes_crees.csv
echo "📝 Nouveau fichier comptes_crees.csv créé"
else
echo "📝 Fichier comptes_crees.csv existant - ajout des nouveaux comptes"
echo "📊 Comptes actuels: $(grep -c "^[^Username]" comptes_crees.csv 2>/dev/null || echo "0")"
fi
# Créer la structure prof une seule fois
echo "📁 Création structure enseignant..."
mkdir -p "$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT"
declare -A classes_vues
# Lecture du CSV élèves avec mot de passe
while IFS=',' read -r classe nom prenom email motdepasse; do
[[ "$classe" = "Classe" ]] && continue
username="${prenom,,}.${nom,,}"
# Utiliser le mot de passe du CSV (nettoyer les espaces)
password=$(echo "$motdepasse" | tr -d ' \r\n')
echo "👤 Création: $username ($classe)"
# Vérifier si le compte existe déjà
if grep -q "^$username," comptes_crees.csv 2>/dev/null; then
echo "⚠️ Compte $username existe déjà - ignoré"
continue
fi
# 1. Création compte Nextcloud SANS fichiers par défaut
echo -e "$password\n$password" | sudo -u www-data php "$NEXTCLOUD_ROOT/occ" user:add \
--display-name="$prenom $nom" \
--email="$email" \
"$username"
if [ $? -eq 0 ]; then
echo "✅ Compte $username créé"
# Supprimer les fichiers par défaut de Nextcloud (économise l'espace)
rm -rf "$NEXTCLOUD_DATA/$username/files"/*
echo "🗑️ Fichiers par défaut supprimés"
# Ajouter au groupe eleves
sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:adduser eleves "$username"
echo "👥 Ajouté au groupe eleves"
# Quota 125Mo (ajusté pour 25Go serveur / 180 élèves)
sudo -u www-data php "$NEXTCLOUD_ROOT/occ" user:setting "$username" files quota "125 MB"
echo "📊 Quota 125Mo défini"
# 2. Structure élève (dans SON espace)
eleve_dir="$NEXTCLOUD_DATA/$username/files/SNT"
mkdir -p "$eleve_dir"
mkdir -p "$eleve_dir/Sequence1_Introduction_SNT"
mkdir -p "$eleve_dir/Sequence1_Introduction_SNT/Activite1_Ordinateur_Binaire"
mkdir -p "$eleve_dir/Sequence1_Introduction_SNT/Activite2_Presentation_Python"
# CORRECTION : Permissions immédiatement après création
chown -R www-data:www-data "$NEXTCLOUD_DATA/$username"
chmod -R 755 "$NEXTCLOUD_DATA/$username"
# 3. Structure prof pour cette classe (une seule fois)
if [[ -z "${classes_vues[$classe]}" ]]; then
echo "🏫 Création structure classe $classe"
prof_classe_dir="$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT/$classe"
mkdir -p "$prof_classe_dir"/{Modeles,Rendus}
mkdir -p "$prof_classe_dir/Modeles/Sequence1_Introduction_SNT"/{Activite1_Ordinateur_Binaire,Activite2_Presentation_Python}
mkdir -p "$prof_classe_dir/Rendus/Sequence1_Introduction_SNT"/{Activite1_Ordinateur_Binaire,Activite2_Presentation_Python}
classes_vues[$classe]=1
fi
# Sauvegarde compte (ajout en fin de fichier)
echo "$username,$password,$email,$classe" >> comptes_crees.csv
echo "💾 Compte sauvegardé dans comptes_crees.csv"
else
echo "❌ Erreur création $username"
fi
done < "${1:-eleves_test.csv}"
# Permissions finales
chown -R www-data:www-data "$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT"
# Rescan Nextcloud
echo "🔄 Rescan des fichiers..."
sudo -u www-data php "$NEXTCLOUD_ROOT/occ" files:scan "$PROF_USERNAME"
echo ""
echo "🎉 Setup terminé !"
echo "📋 Structure créée :"
echo " - Élèves : dossier SNT/ dans leur espace personnel"
echo " - Prof : dossier Classes_SNT/ avec Rendus/ par classe"
echo " - Prof : dossier Modeles_SNT/ avec modèles communs"
echo " - Comptes sauvés dans : comptes_crees.csv"
echo " - Groupe 'eleves' créé avec tous les élèves"