{{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