Ajouter setup_complet_snt.sh
premiere version
This commit is contained in:
parent
b5bf0192f8
commit
812780f38f
1 changed files with 128 additions and 0 deletions
128
setup_complet_snt.sh
Normal file
128
setup_complet_snt.sh
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
#!/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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue