Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:einsammeln_ohne_schulkonsole]] 

Einsammeln ohne Schulkonsole

Ohne Schulkonsole ist das Einsammeln von Schülerarbeiten mühsam, weil die Verzeichnisse weit verstreut liegen. Das folgende Skript behebt diesen Mangel, indem es unter /home/students die Verzeichnisse zusammenfasst.

Das Skript erzeugt folgende Struktur unter /home/students:

__einsammeln-5a
  schueler1
  schueler2
__einsammeln-5b
...
/usr/local/bin/link_einsammeln.sh
#!/bin/bash
# link_einsammeln.sh
# Verlinke die __einsammeln-Verzeichnisse unter /home/students
#
# Frank Schütte 2015
#
STUDENTS=/home/students
EDIR=__einsammeln

PWD=`pwd`;

if [ -n "$1" -a "$1" = "-h" ]; then
  echo "Verwendung: $0"
  echo "     -h  Hilfe"
  echo "     -v  verbose"
  exit 0
fi

[ -n "$1" ] && VERBOSE=true

[ -e "$STUDENTS" ] || exit 1

cd $STUDENTS

remove_old_links(){
  for d in `ls`; do
  (
    [ "$VERBOSE" = "true" ] && echo "Entferne Link-Verzeichnis ${EDIR}-$d..."
    if [ -d ${EDIR}-$d ]; then
      cd ${EDIR}-$d;
      find . -type l -exec rm -f {} \;
      cd ..
      rmdir ${EDIR}-$d || return
    fi
  )
  done;
}

create_new_links(){
  (
  [ -n "$1" ] || return
  local DIR="${EDIR}-$1"
  mkdir $DIR || return
  chown root.teachers $DIR
  chmod 750 $DIR
  [ "$VERBOSE" = "true" ] && echo "Erstelle Link-Verzeichnis $DIR..."
  cd $DIR
  for schueler in `ls ../$1`; do
    [ -e ../$1/$schueler/$EDIR ] && ln -sf ../$1/$schueler/$EDIR $schueler
  done;
  )
}

remove_old_links

for d in `ls`; do
  create_new_links $d
done;

cd $PWD

exit 0
 [[anwenderwiki:einsammeln_ohne_schulkonsole]] anwenderwiki/einsammeln_ohne_schulkonsole.txt · Zuletzt geändert: 2015/07/11 19:47 (Externe Bearbeitung)