#!/bin/bash # # Holt die Briefdateien, die in PDFs umgewandelt wurden, in Arbeitsverzeichnis. # Holt die Maildateien der taeglichen sias-Mails. # Wandelt die PDFs in einzelne htmls um # Benoetigt pdftohtml von http://pdftohtml.sourceforge.net/ # # Das Ergebnis soll durchsuchbar im Webserver darstellbar sein. # Dazu gibt es ein Perlscript, welches den Sub-Baum durchsucht # # michael.schaarwaechter@ub.uni-dortmund.de, 9/07 # # Quellverzeichnis, in dem pro Tag ein Verzeichnis fuer Briefe existiert # Syntax der Unterverzeichnisse dort: yyyy.mm.dd QUELLE=/var/spool/sisis/avserver/batch/alist # Zielverzeichnis, in dem die konvertierten Dateien landen. # Hier werden analoge Unterverzeichnisse angelegt ZIEL=/var/spool/sisis/avserver/batch/alist/briefe4apache # Anzahl der neuesten Verzeichnisse, die aufgehoben werden sollen KEEPDAYS=21 # Wo ist pdftohtml? PDFTOHTML="/usr/local/bin/pdftohtml" # Los gehts .... # Kopieren der Dateien, wenn Verzeichnisse noch nicht da # Verzeichnisse, die schon existieren, werden nicht angefasst for PFAD in `ls -d $QUELLE/????.??.??|tail -$KEEPDAYS` ; do DIR=`basename $PFAD` if [ ! -d $ZIEL/$DIR ]; then echo Kopiere neue Dateien nach $ZIEL/$DIR mkdir $ZIEL/$DIR cd $ZIEL/$DIR cp $QUELLE/$DIR/BRF.EXT.*.pdf $ZIEL/$DIR cp $QUELLE/$DIR/BRF.INT.*.pdf $ZIEL/$DIR cp $QUELLE/$DIR/BRF.MTA.* $ZIEL/$DIR fi done # Schauen, ob alter Kram geloescht werden muss ANZDIR=`ls -d $ZIEL/????.??.?? | wc -l` TODELETE=`expr $ANZDIR - $KEEPDAYS` if [ $TODELETE -gt 0 ]; then for DEL in `ls -d $ZIEL/????.??.??|head -$TODELETE`; do echo Loesche altes $DEL rm $DEL/* rmdir $DEL done fi # Konvertieren der PDFs wo es noch noetig ist (d.h. wo noch keine passende .html vorh. ist) for DIR in `ls -d $ZIEL/????.??.??`; do cd $DIR for BRF in `ls BRF.*.pdf`; do HTMLDAT=`echo $BRF|tr .pdf .htm`l if [ ! -e $HTMLDAT ]; then echo Konvertiere $DIR/$BRF $PDFTOHTML -q -c $BRF fi done done # Konvertieren der E-Mails in einzelne Dateien wo es noch noetig ist (d.h. wo noch keine BRF.MTA.??.??.1.txt liegt) for DIR in `ls -d $ZIEL/????.??.??`; do cd $DIR MAILDATEI=`ls BRF.MTA.??.??` || MAILDATEI="LEER" if [ -e $MAILDATEI ]; then if [ ! -e $MAILDATEI.1.txt ]; then echo Konvertiere $DIR/$MAILDATEI # Jetzt muessen wir ein bisschen perl bemuehen. Andere Loesungen willkommen, wenn eleganter! perl -e ' ($f)=@ARGV; exit if (not -e $f); undef $/;open F,"$f";$c=;close F; $counter=0; $sep=("-"x79)."\n"; while ($c=~/(.*?\n)$sep/sg) { $t=$1;$t=~s/^\n//g; $counter++; open O,">$f.$counter.txt";print O $t;close O; } ' $MAILDATEI fi fi done