--- mitgcm.org/front_content/parse_emails 2009/10/01 15:52:13 1.20 +++ mitgcm.org/front_content/parse_emails 2010/02/17 22:25:46 1.22 @@ -1,6 +1,6 @@ #! /usr/bin/env bash -# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/parse_emails,v 1.20 2009/10/01 15:52:13 jmc Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/parse_emails,v 1.22 2010/02/17 22:25:46 jmc Exp $ # # The purpose of this script is to parse the emails produced by the # MITgcm/verificaton/testreport script and store the data in a @@ -35,7 +35,8 @@ BASEDIR="/u/u0/httpd/html/testing/results" monthDir=`date +%Y`"_"`date +%m` OUTDIR= -TEMPDIR=./ptmp +TEMPDIR=/tmp/prc_emails +ERRMSG=/tmp/tmp.$$ MUNPACK=munpack ADDRERR= PRT=1 @@ -140,7 +141,7 @@ for file in $all_files ; do - # create local copy + #-- create local copy test -e $TEMPDIR && rm -rf $TEMPDIR mkdir $TEMPDIR RETVAL=$? @@ -150,66 +151,82 @@ fi if test "x$RETVAL" != x0 ; then if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo " processing file: '$INDIR/$file'" >> tmp.$$ - echo -n "'mkdir $TEMPDIR' or 'cp $INDIR/$file $TEMPDIR'" >> tmp.$$ - echo " returns error $RETVAL" >> tmp.$$ - mail -s 'parse_emails err_0' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo " processing file: '$INDIR/$file'" >> $ERRMSG + echo -n "'mkdir $TEMPDIR' or 'cp $INDIR/$file $TEMPDIR'" >> $ERRMSG + echo " returns error $RETVAL" >> $ERRMSG + mail -s 'parse_emails err_0' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file continue fi - # ignore multi-part messages + #-- ignore multi-part messages grep "Content-Type: message/partial" $INDIR"/"$file > /dev/null 2>&1 RETVAL=$? if test "x$RETVAL" = x0 ; then if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo 'grep "Content-Type: message/partial" returns error:' $RETVAL >> tmp.$$ - ls -l $INDIR"/"$file >> tmp.$$ - mail -s 'parse_emails err_1' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo 'grep "Content-Type: message/partial" returns error:' $RETVAL >> $ERRMSG + ls -l $INDIR"/"$file >> $ERRMSG + mail -s 'parse_emails err_1' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file continue fi - # munpack + #-- munpack mun=`( cd $TEMPDIR ; $MUNPACK $file | cut -d ' ' -f 1 | head -1 )` RETVAL=$? if test "x$RETVAL" != x0 ; then if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo "$MUNPACK $file returns error: $RETVAL" >> tmp.$$ - ls -l $INDIR"/"$file >> tmp.$$ - mail -s 'parse_emails err_2' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo "$MUNPACK $file returns error: $RETVAL" >> $ERRMSG + ls -l $INDIR"/"$file >> $ERRMSG + mail -s 'parse_emails err_2' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file continue fi - # un-tar - ( cd $TEMPDIR ; tar -xzvf $mun > out ) + #-- un-tar + #( cd $TEMPDIR ; tar -xzvf $mun > out ) + # to remove small files "._mydir" that some MAC OS are adding + # (for each file or dir) to a tar-file, use option "--exclude=": + ( cd $TEMPDIR ; tar -xzvf $mun --exclude="._*" > out ) RETVAL=$? if test "x$RETVAL" != x0 ; then if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo "tar -xzvf $mun returns error:" $RETVAL >> tmp.$$ - ls -l $INDIR"/"$file >> tmp.$$ - ls -l $mun >> tmp.$$ - mail -s 'parse_emails err_3' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo "tar -xzvf $mun returns error:" $RETVAL >> $ERRMSG + ls -l $INDIR"/"$file >> $ERRMSG + ls -l $mun >> $ERRMSG + mail -s 'parse_emails err_3a' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file continue fi tdir=`cat $TEMPDIR"/out" | head -1 | sed -e 's|^./||g' | cut -d '/' -f 1` - rm -f $TEMPDIR"/out" + #tdir=`( cd $TEMPDIR ; /bin/ls -l | grep '^d' | head -1 | awk '{print $NF}' )` + if test -d $TEMPDIR/$tdir ; then + rm -f $TEMPDIR"/out" + else + if test "x$ADDRERR" != x ; then + echo "parsing email error" > $ERRMSG + echo " fail to get a dir output name 'tdir=$tdir'" >> $ERRMSG + echo " from tar file '$TEMPDIR/$mun'" >> $ERRMSG + mail -s 'parse_emails err_3b' $ADDRERR < $ERRMSG + rm -f $ERRMSG + fi + mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file + continue + fi - # select which Monthly Output Dir: + #-- select which Monthly Output Dir: locDir=$OUTDIR if test "x$monthDir" != x0 ; then dd=`echo $tdir | sed 's/_/ /g' | awk '{ for(i=1;i<=NF;i++) print $i }'\ @@ -225,11 +242,11 @@ if test ! -d $locDir ; then if test $PRT = 2 ; then echo "NO DIR: '$locDir' => '$tdir' POSTPONED" ; fi if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo "no dir '$locDir' for outp. '$tdir'" > tmp.$$ - ls -l $INDIR"/"$file >> tmp.$$ - mail -s 'parse_emails err_4' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo "no dir '$locDir' for outp. '$tdir'" > $ERRMSG + ls -l $INDIR"/"$file >> $ERRMSG + mail -s 'parse_emails err_4' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi continue fi @@ -237,7 +254,7 @@ fi fi - # copy to $locDir and rename if necessary + #-- copy to $locDir and rename if necessary sdir=$tdir if test -e $locDir"/"$tdir ; then ad=0 @@ -256,19 +273,19 @@ RETVAL=$? if test "x$RETVAL" != x0 ; then if test "x$ADDRERR" != x ; then - echo "parsing email error" > tmp.$$ - echo "mv $TEMPDIR/$tdir $locDir/$sdir returns error:" $RETVAL >> tmp.$$ - echo -n "in dir: $TEMPDIR : " ; ls -l $TEMPDIR >> tmp.$$ - echo -n "in dir: $OUTDIR : " ; ls -l $locDir >> tmp.$$ - mail -s 'parse_emails err_5' $ADDRERR < tmp.$$ - rm -f tmp.$$ + echo "parsing email error" > $ERRMSG + echo "mv $TEMPDIR/$tdir $locDir/$sdir returns error:" $RETVAL >> $ERRMSG + echo -n "in dir: $TEMPDIR : " ; ls -l $TEMPDIR >> $ERRMSG + echo -n "in dir: $OUTDIR : " ; ls -l $locDir >> $ERRMSG + mail -s 'parse_emails err_5' $ADDRERR < $ERRMSG + rm -f $ERRMSG fi mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file continue fi chmod -R a+rx $locDir"/"$sdir > /dev/null 2>&1 - # remove the original file + #-- remove the original file rm -f $INDIR"/"$file done