diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2012-08-09 13:49:29 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2012-08-09 13:49:29 +0200 |
commit | 43608c093ba73fae2408685d180c2a337aaecc13 (patch) | |
tree | 0ddd88328da41221f8afc4b32941666ec3cfa937 /sbin | |
parent | fd08eee1341f6f8a0e91afbe37f63554ce9070cc (diff) | |
download | itzks-systems-43608c093ba73fae2408685d180c2a337aaecc13.tar.gz itzks-systems-43608c093ba73fae2408685d180c2a337aaecc13.tar.bz2 itzks-systems-43608c093ba73fae2408685d180c2a337aaecc13.zip |
* etc/debian-edu/itzks.config: Add central configuration file, most settings have to be derived from LDAP (todo!)
* sbin/itzks-transfer-cleaner: Cleanup script for ITZkS transfer area.
Diffstat (limited to 'sbin')
-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 |