#!/bin/bash# =========================================================================# Script pour faciliter le dépot de fichier dans les casiers profs.# Respecte la hiérarchie des fichiers copiés# Ne détruit pas une version existante (copie dans casier/old)# Fichier de log (casier/log) pou connaître les derniers dépôts## MCD : novembre 2005## Usage : cf fonction éponyme## Remarque :# - Vérifie que le casier est correct## Bug : Ne marche que pour les fichiers issus de /home## Historique# ----------# nov 05 : log et old crées si n'existent pas## =========================================================================# ===============================# == Quelques constantes ==# ===============================# --- Les couleurs ---#CCASIER="\033[37;44;1m"COK="\033[32m"CERREUR="\033[31m"CNEUTRE="\033[0;0m"CFILE="\033[37;1m"CCASIER=$CFILE# ====================================# == Quelques fonction utiles ==# ====================================function usage() { echo "usage: casier prof [fichier]"; echo "- dépose le fichier (dossier) dans le casier prof"; echo "- si fichier non spécifié, dépose le dossier courant"; exit;}function erreur() { echo -e "${CERREUR}Erreur! ${CNEUTRE}$1"; exit 1; }function ok() { echo -e "${COK}$1${CNEUTRE}"; }function log() { echo "$DATE `whoami` $SRC" >> $LOG; }# --- Copie le fichier en vérifiant que c est valide function copy() { if [[ ! -e /home/$1 ]]; then erreur "n'existe pas"; fi if [[ -e $CASIER/$SRC ]]; then mv $CASIER/$SRC $CASIER/$SRC-$BAK if [[ $? -ne 0 ]]; then erreur "inconnue"; fi (cd $CASIER; cp -r --parents $SRC-$BAK $OLD;) if [[ $? -ne 0 ]]; then erreur "inconnue"; fi rm -rf $CASIER/$SRC-$BAK if [[ $? -ne 0 ]]; then erreur "inconnue"; fi fi #(cd /home; cp -rf --parents --backup=t $SRC $CASIER;) (cd /home; cp -rf --parents $SRC $CASIER;) if [[ $? -ne 0 ]]; then erreur "inconnue"; fi ok "OK";}# ==================# == Script ==# ==================# Tester le nombre de paramètres# ----------------------------------if [ $# -ne 2 -a $# -ne 1 ]; then usage; exit 1; fi# Assigner les paramètres généraux# -----------------------------------------------------------PROF=$1CASIER=/home/$PROF/casierif [[ ! -e $CASIER ]]; then erreur "pas de casier $PROF"; fi# On crée si n'existe pasOLD=$CASIER/oldif [[ ! -e $OLD ]]; then mkdir $OLD; chmod 777 $OLD;fiLOG=$CASIER/logif [[ ! -e $LOG ]]; then touch $LOG; chmod 666 $OLD;fiDATE=`date "+%x %T"`BAK=`date "+%s"`# --- Le fichier/dossier à déposer# --- La manière de le présenter à l'utilisateurif [[ $# -eq 1 ]] ; then SRC=$PWD; TXT="dossier courant";else SRC=$2; TXT="$SRC";fi# --- Construit la variable SRC# --- SRC = nom complet qualifié du fichier sans /home/ au débutif [[ ${SRC:0:1} != "/" ]]; then SRC="$PWD/$SRC"; fiSRC=${SRC:6}# Les copier # --------------echo -ne "Dépôt "echo -ne "de ${CFILE}$TXT${CNEUTRE} "echo -ne "chez $CCASIER$PROF$CNEUTRE "echo -ne ": "copy $SRC# Pour règler pbl permissions de fichiers et dossierschmod -R o+rX,g-rwx $CASIER/$USERlog $SRC