diff options
Diffstat (limited to 'sbin/itzks-transfer-cleaner')
| -rwxr-xr-x | sbin/itzks-transfer-cleaner | 83 | 
1 files changed, 83 insertions, 0 deletions
| diff --git a/sbin/itzks-transfer-cleaner b/sbin/itzks-transfer-cleaner new file mode 100755 index 0000000..bc0dc95 --- /dev/null +++ b/sbin/itzks-transfer-cleaner @@ -0,0 +1,83 @@ +#!/bin/bash + +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 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 | 
