/[MITgcm]/mitgcm.org/front_content/parse_emails
ViewVC logotype

Contents of /mitgcm.org/front_content/parse_emails

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.16 - (show annotations) (download)
Tue Mar 4 17:21:40 2008 UTC (13 years, 6 months ago) by jmc
Branch: MAIN
Changes since 1.15: +2 -2 lines
minor change

1 #! /usr/bin/env bash
2
3 # $Header: /u/gcmpack/mitgcm.org/front_content/parse_emails,v 1.15 2008/02/28 20:03:45 jmc Exp $
4 #
5 # The purpose of this script is to parse the emails produced by the
6 # MITgcm/verificaton/testreport script and store the data in a
7 # reasonable location.
8
9
10 usage()
11 {
12 echo
13 echo "Usage: $0 [OPTIONS]"
14 echo
15 echo "where possible OPTIONS are:"
16 echo " (-h|-help) print usage"
17 echo " (-s|-silent) silent mode"
18 echo " (-v|-verbose) verbose mode"
19 echo " (-i |-ind )DIR get mpack-created emails from DIR"
20 echo " [def=\"$INDIR\"]"
21 echo " (-o |-outd )DIR write the data to DIR"
22 echo " [def=\"$OUTDIR\"]"
23 echo " (-t |-tempd )DIR use temporary directory DIR"
24 echo " [def=\"$TEMPDIR\"]"
25 echo " (-u |-unpack )EXE use executable EXE to unpack e-mails"
26 echo " [def=\"$MUNPACK\"]"
27 echo " (-a |-addr )ADDR send e-mail to ADDR if Error"
28 echo " [def='"$ADDRERR"']"
29 echo
30 exit 1
31 }
32
33 # defaults
34 INDIR="/u/u2/jmc/Mail/MITgcm-test"
35 OUTDIR="/u/u0/httpd/html/testing/results/"`date +%Y`"_"`date +%m`
36 TEMPDIR=./ptmp
37 MUNPACK=munpack
38 ADDRERR=
39 PRT=1
40
41 # Parse options
42 ac_prev=
43 for ac_option ; do
44
45 # If the previous option needs an argument, assign it.
46 if test -n "$ac_prev"; then
47 eval "$ac_prev=\$ac_option"
48 ac_prev=
49 continue
50 fi
51
52 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
53
54 case $ac_option in
55
56 -help | --help | -h | --h)
57 usage ;;
58 -s | --s | -silent | --silent)
59 PRT=0 ;;
60 -v | --v | -verbose | --verbose)
61 PRT=2 ;;
62
63 -ind | --ind | -i | --i)
64 ac_prev=INDIR ;;
65 --ind=* | -ind=* | --i=* | -i=*)
66 INDIR=$ac_optarg ;;
67
68 -outd | --outd | -o | --o)
69 ac_prev=OUTDIR ;;
70 --outd=* | -outd=* | --o=* | -o=*)
71 OUTDIR=$ac_optarg ;;
72
73 -tempd | --tempd | -t | --t)
74 ac_prev=TEMPDIR ;;
75 --tempd=* | -tempd=* | --t=* | -t=*)
76 TEMPDIR=$ac_optarg ;;
77
78 -u | --u | -unpack | --unpack)
79 ac_prev=MUNPACK ;;
80 -u=* | --u=* | -unpack=* | --unpack=*)
81 MUNPACK=$ac_optarg ;;
82
83 -a | --a | -addr | --addr)
84 ac_prev=ADDRERR ;;
85 -a=* | --a=* | -addr=* | --addr=*)
86 ADDRERR=$ac_optarg ;;
87
88 *)
89 # copy the file list to FL_#
90 echo "Error: don't understand argument \"$ac_option\""
91 usage
92 ;;
93
94 esac
95
96 done
97
98 if test ! -x $MUNPACK ; then
99 echo "ERROR: \"$MUNPACK\" is not executable"
100 exit 2
101 fi
102 if test ! -e $OUTDIR ; then
103 mkdir $OUTDIR
104 RETVAL=$?
105 if test "x$RETVAL" != x0 ; then
106 echo "ERROR: directory \"$OUTDIR\" doesn't exist and can't be created"
107 exit 3
108 fi
109 chgrp gcmpack $OUTDIR
110 chmod 775 $OUTDIR
111 fi
112
113 all_files=`ls -1 $INDIR`
114 nb_files=`echo "$all_files" | grep -c '^msg\.'`
115
116 if test $PRT = 1 ; then
117 echo "Using OUTDIR=\"$OUTDIR\""
118 echo "Using INDIR=\"$INDIR\""
119 echo -n "Unpacking the emails ..."
120 elif test $nb_files != 0 ; then
121 echo "Unpacking $nb_files emails from '$INDIR' to '$OUTDIR'"
122 if test "x$ADDRERR" != x ; then
123 echo " "`date`" (send msg to '$ADDRERR' if Error)"
124 fi
125 if test $PRT = 2 ; then echo -n " dir:" ; fi
126 fi
127
128 for file in $all_files ; do
129
130 # create local copy
131 test -e $TEMPDIR && rm -rf $TEMPDIR
132 mkdir $TEMPDIR
133 RETVAL=$?
134 if test "x$RETVAL" = x0 ; then
135 cp $INDIR"/"$file $TEMPDIR
136 RETVAL=$?
137 fi
138 if test "x$RETVAL" != x0 ; then
139 if test "x$ADDRERR" != x ; then
140 echo "parsing email error" > tmp.$$
141 echo " processing file: '$INDIR/$file'" >> tmp.$$
142 echo -n "'mkdir $TEMPDIR' or 'cp $INDIR/$file $TEMPDIR'" >> tmp.$$
143 echo " returns error $RETVAL" >> tmp.$$
144 mail -s 'parse_emails err_0' $ADDRERR < tmp.$$
145 rm -f tmp.$$
146 fi
147 mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
148 continue
149 fi
150
151 # ignore multi-part messages
152 grep "Content-Type: message/partial" $INDIR"/"$file > /dev/null 2>&1
153 RETVAL=$?
154 if test "x$RETVAL" = x0 ; then
155 if test "x$ADDRERR" != x ; then
156 echo "parsing email error" > tmp.$$
157 echo 'grep "Content-Type: message/partial" returns error:' $RETVAL >> tmp.$$
158 ls -l $INDIR"/"$file >> tmp.$$
159 mail -s 'parse_emails err_1' $ADDRERR < tmp.$$
160 rm -f tmp.$$
161 fi
162 mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
163 continue
164 fi
165
166 # munpack
167 mun=`( cd $TEMPDIR ; $MUNPACK $file | cut -d ' ' -f 1 | head -1 )`
168 RETVAL=$?
169 if test "x$RETVAL" != x0 ; then
170 if test "x$ADDRERR" != x ; then
171 echo "parsing email error" > tmp.$$
172 echo "$MUNPACK $file returns error: $RETVAL" >> tmp.$$
173 ls -l $INDIR"/"$file >> tmp.$$
174 mail -s 'parse_emails err_2' $ADDRERR < tmp.$$
175 rm -f tmp.$$
176 fi
177 mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
178 continue
179 fi
180
181 # un-tar
182 ( cd $TEMPDIR ; tar -xzvf $mun > out )
183 RETVAL=$?
184 if test "x$RETVAL" != x0 ; then
185 if test "x$ADDRERR" != x ; then
186 echo "parsing email error" > tmp.$$
187 echo "tar -xzvf $mun returns error:" $RETVAL >> tmp.$$
188 ls -l $INDIR"/"$file >> tmp.$$
189 ls -l $mun >> tmp.$$
190 mail -s 'parse_emails err_3' $ADDRERR < tmp.$$
191 rm -f tmp.$$
192 fi
193 mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
194 continue
195 fi
196 tdir=`cat $TEMPDIR"/out" | head -1 | sed -e 's|^./||g' | cut -d '/' -f 1`
197 rm -f $TEMPDIR"/out"
198
199 # copy to $OUTDIR and rename if necessary
200 sdir=$tdir
201 if test -e $OUTDIR"/"$tdir ; then
202 ad=0
203 while test -e $OUTDIR"/"$tdir"_"$ad ; do
204 ad=$(( $ad + 1 ))
205 done
206 sdir=$tdir"_"$ad
207 fi
208 if test $PRT = 2 ; then echo -n " '$sdir'" ; fi
209 mv $TEMPDIR"/"$tdir $OUTDIR"/"$sdir > /dev/null 2>&1
210 RETVAL=$?
211 if test "x$RETVAL" != x0 ; then
212 if test "x$ADDRERR" != x ; then
213 echo "parsing email error" > tmp.$$
214 echo "mv $TEMPDIR/$tdir $OUTDIR/$sdir returns error:" $RETVAL >> tmp.$$
215 echo -n "in dir: $TEMPDIR : " ; ls -l $TEMPDIR >> tmp.$$
216 echo -n "in dir: $OUTDIR : " ; ls -l $OUTDIR >> tmp.$$
217 mail -s 'parse_emails err_4' $ADDRERR < tmp.$$
218 rm -f tmp.$$
219 fi
220 mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
221 continue
222 fi
223 chmod -R a+rx $OUTDIR"/"$sdir > /dev/null 2>&1
224 # gzip $OUTDIR"/"$sdir"/output.txt"
225
226 # remove the original file
227 rm -f $INDIR"/"$file
228
229 done
230 if test $PRT = 1 ; then echo " done" ; fi
231 if test $PRT = 2 -a $nb_files != 0 ; then echo "" ; fi

  ViewVC Help
Powered by ViewVC 1.1.22