{{tag> Einsammeln Schulkonsole Skripte}} ====== 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