#!/bin/sh # (c) Dinko Korunic, InfoMAR, 2009 # program presrece SAP e-mail ZIP-ove i sprema u centralni repozitorij # pri tome uniquely naziva datotekea ukoliko je to moguce, dajuci im imena # sa tipicnim Unix timestampom REPO="/home/sap" WHOAMI=$(getent passwd | gawk -F: \ '{ if ($3 == PROCINFO["uid"]) { split($5, a, ","); print a[1] }}') REPOUSER="$REPO/$WHOAMI/$(date +%d-%m-%Y)" REPOUSERTMP="$REPOUSER/tmp" # generates unique destination name for ZIPs and moves required file into # destination function ziprenmv() { ORIGFILE="$1" DESTDIR="$2" [ -z "$ORIGFILE" ] && exit 1 [ -z "$DESTDIR" ] && exit 1 BASENAME=$(basename "$ORIGFILE" | sed -e 's/.zip$//gi') TS=$(date +%s) # generate unique name and rename file if possible while true; do DESTNAME="$DESTDIR/$BASENAME-$TS.ZIP" if [ ! -f "$DESTNAME" ]; then mv -f "$ORIGFILE" "$DESTNAME" break else # offset by one.. TS=$(expr $TS + 1) fi done } # security stuff cd "$HOME" umask 022 # sanity checks [ -z "$REPO" ] && exit 1 [ -z "$WHOAMI" ] && WHOAMI=$(whoami) [ -z "$REPOUSER" ] && exit 1 # make REPO per user and date mkdir -p "$REPOUSER" # make TMP directory if [ -d "$REPOUSERTMP" ]; then rm -rf "$REPOUSERTMP" fi mkdir -p "$REPOUSERTMP" # change pwd cd "$REPOUSERTMP" # go with unpacking munpack -f -q -t >/dev/null 2>&1 # remove all part and desc files find "$REPOUSERTMP" -type f \( -iname 'part*' -o -iname '*desc' \) \ -exec rm -f '{}' '+' # uniquely rename all zips and move them to central repo find "$REPOUSERTMP" -type f -iname '*zip' | while read i; do ziprenmv "$i" "$REPOUSER" done # cleanup TMP directory (trap maybe?) cd "$HOME" rm -rf "$REPOUSERTMP" exit 0