All pastes #287257 Raw Edit

Stuff

public shellscript v1 · immutable
#287257 ·published 2006-12-21 09:10 UTC
rendered paste body
#!/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