#!/bin/bash if [ $(id -u) -gt 0 ]; then echo "ERROR: This script has to run as super-user root." exit 1 fi test -e /etc/debian-edu/itzks.config && . /etc/debian-edu/itzks.config || exit -1 declare -i warn_time=`echo $TRANSFER_DEL_WARNING | awk {'print $2'}` declare -i del_time=`echo $TRANSFER_DEL_PERFORM | awk {'print $2'}` tolerate_time=$(expr $del_time - $warn_time) function create_mail_warnings () { ls /tmp | grep "transfer_cleaner-" > /dev/null && { echo -e " TASK: removing yesterday's warning-mails in /tmp silently" rm /tmp/transfer_cleaner-*.mail } echo " TASK: creating today's warning mails in /tmp" find $TRANSFERDIRS/* -type f -mindepth 1 $TRANSFER_DEL_WARNING -print 2>/dev/null | \ while read filename; do uid=$(stat -c %U "$filename") test -e "/tmp/transfer_cleaner-$uid.mail" || \ cat > /tmp/transfer_cleaner-$uid.mail << EOT Hallo `getent passwd $uid | cut -d":" -f5 | cut -d"," -f1`, einige Ihrer/Deiner Dateien im Transfer-Bereich des Schulnetzes wurden gelöscht. Diese Mail enthält am Ende eine Liste von Dateien im Transfer-Bereich, die innerhalb der letzten $warn_time Tage nicht mehr verändert wurden. Wenn auf diese Dateien innerhalb der nächsten $tolerate_time Tage nicht schreibend zugegriffen wird (einfaches Öffnen reicht nicht aus), dann werden sie aus dem Transfer-Bereich des Schulnetzwerks gelöscht. Dateien, die in $tolerate_time Tagen gelöscht werden: ----------------------------------------------------- EOT echo " $(echo $filename | cut -d "/" -f 3-)" >> /tmp/transfer_cleaner-$uid.mail done } function send_mail_warnings() { is_true $TRANSFER_WARNINGS_DISABLED && return echo " TASK: sending mail-warnings to" find /tmp/transfer_cleaner-*.mail 2>/dev/null | while read mailfile; do uid=$(echo $mailfile | cut -d"-" -f2 | cut -d"." -f1) echo " $uid@$DOMAIN" cat "$mailfile" | mail -s "Transfer-Bereich im Schulnetz: Dateien, die bald gelöscht werden" $uid@$DOMAIN done } function remove_files () { # remove files echo " TASK: removing expired files" find $TRANSFERDIRS/* -type f -mindepth 1 $TRANSFER_DEL_PERFORM 2>/dev/null |\ while read filename; do # removal action in script is disabled for now for testing purposes echo -n " "; echo rm -vf "$filename" done } function remove_directories () { #remove directories echo " TASK: removing empty (expired) directories" find $TRANSFERDIRS/* -type d -mindepth 1 $TRANSFER_DEL_PERFORM 2>/dev/null | sort -r | \ while read dirname; do rmdir --ignore-fail-on-non-empty -p -v "$dirname" &> /dev/null done } # main check_host "tjener" check_root cron_header create_mail_warnings send_mail_warnings remove_files remove_directories finish_script 0