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