summaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-08-09 13:49:29 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-08-09 13:49:29 +0200
commit43608c093ba73fae2408685d180c2a337aaecc13 (patch)
tree0ddd88328da41221f8afc4b32941666ec3cfa937 /sbin
parentfd08eee1341f6f8a0e91afbe37f63554ce9070cc (diff)
downloaditzks-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-xsbin/itzks-transfer-cleaner83
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