Veritas-bu

[Veritas-bu] Moving tapes into scratch pool

2003-03-14 11:59:35
Subject: [Veritas-bu] Moving tapes into scratch pool
From: Mark.Donaldson AT experianems DOT com (Donaldson, Mark)
Date: Fri, 14 Mar 2003 09:59:35 -0700
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C2EA4B.17A45E50
Content-Type: text/plain

Vault is a good product but for light work you can do it yourself if you
want.  I manage my offsite backups just through scripts.  Here's a snip from
an e-mail to somebody on this:

1. Netbackup Vault - it's a product set that does just what you're talking
about.  It's an add-on for v3.4 and included but disabled in v4.5.  Pay $$
to Veritas to make it work via a license key.

2. Write it yourself.  It turns out to be not to hard if you're a good
scripter and if you think it out beforehand.  I've written a couple of
modules:

  a. Removable tape identification - which tapes to you want to remove? 
For daily tape rotations (pulling full tapes & inserting blank tapes) I've
got a ruleset like this: 1-week since last written AND in library AND (full
OR frozen OR suspended). It's written around vmquery output.  The 1-week
rule keeps the mostly-likely-to-be-requested tapes in the library so I don't
have to fetch removed ones too much.  For offsites, I duplicate tapes to a
specific tape pool then simply eject all tapes in that pool.

  b. Injectable tape identificiation - which tapes are empty and available
to be inserted into the library.  My rules are: not-cleaning-tape AND
out-of-library AND onsite (volume group) AND non-asssigned AND data-tape
(status=0, ie: not catalog & not HSM).  This one is also built around
vmquery output.

  c. Define different volume groups for in-library, out-of-library, &
offsite to help with these identificiations.

  d. Offsite processing - scripts which I run to track tapes that leave the
building to our offsite storage.  There's a check-in/-out pair of scripts
that alter the entries in the volume database that actually track this
stuff.  Look at vmchange -new_v, -offsent, -offreturn, & -offloc (these are
different flags for v4.5 but analogous).

  e. If you're storing tapes out of the library, it's possible that there
will be a restore request that wants a tape not in the library.  Unless you
keep the GUI up all the time, you'll not know.  I have a cron-based script
that wakes up every 10 minutes and uses the "vmoprcmd -d pr" & "vmoprcmd -d
ds" command to watch for pending requests and pages when one comes in and
also pages when it's done with the tape.

  f. Rotation script - write a job for the ops staff, either cron or
manually run - that uses the ident removable & ident insertable routines
above to create a report.  My version also auto-ejects the tapes to the
mailslot for removal, then pages to have them swapped with injectable tapes.
There's another script that injects tapes from the mailslot back into the
library.  vmchange can be used to eject tapes, vmupdate to inject them.
I've marked a "water-line" of scratch tapes that I try to keep in the
machine.  I never
rotate out more tapes that what I need to keep enough spares.
-----

As far as converting tapes back to the scratchpool, here's my script.  It
looks up the scratchpool name & numbers so the only thing you should have to
customize is the mail address:

#!/bin/sh

##auto_scratchpool
## This script is used to identify all tapes which are available for
## use (all expired images) but are not in the "Scratch Pool" and change
## them to be in the Scratch pool.  This should increase tape availability
## for all Classes of backups.

# Mark Donaldson - Nov 11, 1999 - Created
# MDD  3/14/2001 - Remove need to have tape in robot to set back to
Scratchpool
#                  Should be able to expire anywhere it is located.  Will
track
#                  Offsite & Shelved stuff with Volume Groups.
# MDD  8/27/2002 - Removed logging stuff and neatened the code a little
# MDD 10/17/2002 - added logfile stuff

PATH=$PATH:/usr/openv/volmgr/bin:/usr/openv/local
export PATH

MAILADDR="YOU AT YOURDOMAIN DOT COM"

# A little log file management
LOG=/usr/openv/netbackup/logs/`basename $0`.log
[ ! -f $LOG ] && touch $LOG

KEEPLINES=1000
if [ `wc -l $LOG | awk '{print $1}'` -gt `expr $KEEPLINES + 100` ]
then
  tail -n $KEEPLINES $LOG > $LOG.$$
  mv $LOG.$$ $LOG
fi

# Note: vmquery col  1 is tape number
#               col  3 is tape type
#               col  9 is slot number
#               col 12 is poolname
#               col 20 is "assigned" date
#               col 28 is status code (0=regular backups, 1=Catalog, 2=HSM)

# Now lookup scratchpool pool number.
SPname=`vmpool -listscratch | tail -1`
SPnum=`vmpool -listall | \
   awk -F: '$1=="pool number" {pn=$2}
            $1=="pool name" && $2~/^ *'$SPname'$/ {print pn}'`

# Reset any empty but assigned tapes
echo "Deassigning empty tapes"   >>$LOG
bpexpdate -deassignempty -force  >>$LOG 2>&1

tapelist=`vmquery -a -w |  awk '$3 !~ /CLN/ && \
                               $12 != "'$SPname'" && \
                               $20 ~  /^00\/00\/00/ && \
                               $28 == 0 {print $1}' `

echo "\n## Script run `date`." >>$LOG
for eachtape in $tapelist
do
  #Tape available for reassignment to scratchpool.
  echo "Changing $eachtape to pool $SPname" >>$LOG
  vmchange -p $SPnum -m $eachtape           >>$LOG 2>&1
done

number=`vmquery -w -p $SPnum | awk 'BEGIN {sum=0} {if ( $9!~/-/ && NR>3)
{sum++}} END {print sum}'`

echo "There is $number scratch tapes in the library" >>$LOG

if [ $number -eq 0 ]
then
  echo "Warning, the library is out of scratch media. Please add more." | \
    mailx -s "Warning from `basename $0` on `hostname`" $MAILADDR
fi
exit




-----Original Message-----
From: Timothy Arnold [mailto:timothy.arnold AT becta.org DOT uk]
Sent: Friday, March 14, 2003 2:31 AM
To: veritas-bu AT mailman.eng.auburn DOT edu
Subject: [Veritas-bu] Moving tapes into scratch pool


Hi,

(Solaris 8, Netbackup 3.4.1.)

I am working on creating scripts for our operators to move tapes in and out
of the library. At present, when we reinventory the library, the tapes are
put in to the pool they were taken from even though they have expired. How
do I automatically put them in the ScratchPool that I can defined? Is there
a vmupdate argument?

Also, what do people think of a) Netbackup 4.5 and b) BPVault. The new
financial year is coming up and I propose that we upgrade to Netbackup V4.5
and purchase BPVault for offsite duplication.

Thanks,
Timothy.


--
Timothy Arnold, Systems Support Officer, Internet Services,
Becta, Coventry, CV4 7JJ, UK                      Voice: +44 24 7684 7169
email: timothy.arnold AT becta.org DOT uk                Fax:   +44 24 7641 
1418 



**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.
This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.
www.mimesweeper.com
**********************************************************************

_______________________________________________
Veritas-bu maillist  -  Veritas-bu AT mailman.eng.auburn DOT edu
http://mailman.eng.auburn.edu/mailman/listinfo/veritas-bu

------_=_NextPart_001_01C2EA4B.17A45E50
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3DUS-ASCII">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
5.5.2653.12">
<TITLE>RE: [Veritas-bu] Moving tapes into scratch pool</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=3D2>Vault is a good product but for light work you can do =
it yourself if you want.&nbsp; I manage my offsite backups just through =
scripts.&nbsp; Here's a snip from an e-mail to somebody on =
this:</FONT></P>

<P><FONT SIZE=3D2>1. Netbackup Vault - it's a product set that does =
just what you're talking about.&nbsp; It's an add-on for v3.4 and =
included but disabled in v4.5.&nbsp; Pay $$ to Veritas to make it work =
via a license key.</FONT></P>

<P><FONT SIZE=3D2>2. Write it yourself.&nbsp; It turns out to be not to =
hard if you're a good scripter and if you think it out =
beforehand.&nbsp; I've written a couple of modules:</FONT></P>

<P><FONT SIZE=3D2>&nbsp; a. Removable tape identification - which tapes =
to you want to remove? </FONT>
<BR><FONT SIZE=3D2>For daily tape rotations (pulling full tapes &amp; =
inserting blank tapes) I've got a ruleset like this: 1-week since last =
written AND in library AND (full OR frozen OR suspended). It's written =
around vmquery output.&nbsp; The 1-week rule keeps the =
mostly-likely-to-be-requested tapes in the library so I don't have to =
fetch removed ones too much.&nbsp; For offsites, I duplicate tapes to a =
specific tape pool then simply eject all tapes in that pool.</FONT></P>

<P><FONT SIZE=3D2>&nbsp; b. Injectable tape identificiation - which =
tapes are empty and available to be inserted into the library.&nbsp; My =
rules are: not-cleaning-tape AND out-of-library AND onsite (volume =
group) AND non-asssigned AND data-tape (status=3D0, ie: not catalog =
&amp; not HSM).&nbsp; This one is also built around vmquery =
output.</FONT></P>

<P><FONT SIZE=3D2>&nbsp; c. Define different volume groups for =
in-library, out-of-library, &amp; offsite to help with these =
identificiations.</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp; d. Offsite processing - scripts which I run to =
track tapes that leave the building to our offsite storage.&nbsp; =
There's a check-in/-out pair of scripts that alter the entries in the =
volume database that actually track this stuff.&nbsp; Look at vmchange =
-new_v, -offsent, -offreturn, &amp; -offloc (these are different flags =
for v4.5 but analogous).</FONT></P>

<P><FONT SIZE=3D2>&nbsp; e. If you're storing tapes out of the library, =
it's possible that there will be a restore request that wants a tape =
not in the library.&nbsp; Unless you keep the GUI up all the time, =
you'll not know.&nbsp; I have a cron-based script that wakes up every =
10 minutes and uses the &quot;vmoprcmd -d pr&quot; &amp; &quot;vmoprcmd =
-d ds&quot; command to watch for pending requests and pages when one =
comes in and also pages when it's done with the tape.</FONT></P>

<P><FONT SIZE=3D2>&nbsp; f. Rotation script - write a job for the ops =
staff, either cron or manually run - that uses the ident removable =
&amp; ident insertable routines above to create a report.&nbsp; My =
version also auto-ejects the tapes to the mailslot for removal, then =
pages to have them swapped with injectable tapes.&nbsp; There's another =
script that injects tapes from the mailslot back into the =
library.&nbsp; vmchange can be used to eject tapes, vmupdate to inject =
them.&nbsp; I've marked a &quot;water-line&quot; of scratch tapes that =
I try to keep in the machine.&nbsp; I never</FONT></P>

<P><FONT SIZE=3D2>rotate out more tapes that what I need to keep enough =
spares.</FONT>
<BR><FONT SIZE=3D2>-----</FONT>
</P>

<P><FONT SIZE=3D2>As far as converting tapes back to the scratchpool, =
here's my script.&nbsp; It looks up the scratchpool name &amp; numbers =
so the only thing you should have to customize is the mail address:</FON=
T></P>

<P><FONT SIZE=3D2>#!/bin/sh</FONT>
</P>

<P><FONT SIZE=3D2>##auto_scratchpool</FONT>
<BR><FONT SIZE=3D2>## This script is used to identify all tapes which =
are available for</FONT>
<BR><FONT SIZE=3D2>## use (all expired images) but are not in the =
&quot;Scratch Pool&quot; and change</FONT>
<BR><FONT SIZE=3D2>## them to be in the Scratch pool.&nbsp; This should =
increase tape availability</FONT>
<BR><FONT SIZE=3D2>## for all Classes of backups.</FONT>
</P>

<P><FONT SIZE=3D2># Mark Donaldson - Nov 11, 1999 - Created</FONT>
<BR><FONT SIZE=3D2># MDD&nbsp; 3/14/2001 - Remove need to have tape in =
robot to set back to Scratchpool</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Should be able to expire =
anywhere it is located.&nbsp; Will track</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Offsite &amp; Shelved stuff =
with Volume Groups.</FONT>
<BR><FONT SIZE=3D2># MDD&nbsp; 8/27/2002 - Removed logging stuff and =
neatened the code a little</FONT>
<BR><FONT SIZE=3D2># MDD 10/17/2002 - added logfile stuff</FONT>
</P>

<P><FONT =
SIZE=3D2>PATH=3D$PATH:/usr/openv/volmgr/bin:/usr/openv/local</FONT>
<BR><FONT SIZE=3D2>export PATH</FONT>
</P>

<P><FONT SIZE=3D2>MAILADDR=3D&quot;YOU AT YOURDOMAIN DOT COM&quot;</FONT>
</P>

<P><FONT SIZE=3D2># A little log file management</FONT>
<BR><FONT SIZE=3D2>LOG=3D/usr/openv/netbackup/logs/`basename =
$0`.log</FONT>
<BR><FONT SIZE=3D2>[ ! -f $LOG ] &amp;&amp; touch $LOG</FONT>
</P>

<P><FONT SIZE=3D2>KEEPLINES=3D1000</FONT>
<BR><FONT SIZE=3D2>if [ `wc -l $LOG | awk '{print $1}'` -gt `expr =
$KEEPLINES + 100` ]</FONT>
<BR><FONT SIZE=3D2>then</FONT>
<BR><FONT SIZE=3D2>&nbsp; tail -n $KEEPLINES $LOG &gt; $LOG.$$</FONT>
<BR><FONT SIZE=3D2>&nbsp; mv $LOG.$$ $LOG</FONT>
<BR><FONT SIZE=3D2>fi</FONT>
</P>

<P><FONT SIZE=3D2># Note: vmquery col&nbsp; 1 is tape number</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; col&nbsp; 3 is tape type</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; col&nbsp; 9 is slot number</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; col 12 is poolname</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; col 20 is &quot;assigned&quot; date</FONT>
<BR><FONT =
SIZE=3D2>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; col 28 is status code (0=3Dregular backups, =
1=3DCatalog, 2=3DHSM)</FONT>
</P>

<P><FONT SIZE=3D2># Now lookup scratchpool pool number.</FONT>
<BR><FONT SIZE=3D2>SPname=3D`vmpool -listscratch | tail -1`</FONT>
<BR><FONT SIZE=3D2>SPnum=3D`vmpool -listall | \</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp; awk -F: '$1=3D=3D&quot;pool =
number&quot; {pn=3D$2}</FONT>
<BR><FONT =
SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; $1=3D=3D&quot;pool name&quot; &amp;&amp; $2~/^ *'$SPname'$/ {print =
pn}'`</FONT>
</P>

<P><FONT SIZE=3D2># Reset any empty but assigned tapes</FONT>
<BR><FONT SIZE=3D2>echo &quot;Deassigning empty tapes&quot;&nbsp;&nbsp; =
&gt;&gt;$LOG</FONT>
<BR><FONT SIZE=3D2>bpexpdate -deassignempty -force&nbsp; &gt;&gt;$LOG =
2&gt;&amp;1</FONT>
</P>

<P><FONT SIZE=3D2>tapelist=3D`vmquery -a -w |&nbsp; awk '$3 !~ /CLN/ =
&amp;&amp; \</FONT>
<BR><FONT =
SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $12 !=3D =
&quot;'$SPname'&quot; &amp;&amp; \</FONT>
<BR><FONT =
SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $20 ~&nbsp; /^00\/00\/00/ =
&amp;&amp; \</FONT>
<BR><FONT =
SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $28 =3D=3D 0 {print $1}' =
`</FONT>
</P>

<P><FONT SIZE=3D2>echo &quot;\n## Script run `date`.&quot; =
&gt;&gt;$LOG</FONT>
<BR><FONT SIZE=3D2>for eachtape in $tapelist</FONT>
<BR><FONT SIZE=3D2>do</FONT>
<BR><FONT SIZE=3D2>&nbsp; #Tape available for reassignment to =
scratchpool.</FONT>
<BR><FONT SIZE=3D2>&nbsp; echo &quot;Changing $eachtape to pool =
$SPname&quot; &gt;&gt;$LOG</FONT>
<BR><FONT SIZE=3D2>&nbsp; vmchange -p $SPnum -m =
$eachtape&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&gt;&gt;$LOG 2&gt;&amp;1</FONT>
<BR><FONT SIZE=3D2>done</FONT>
</P>

<P><FONT SIZE=3D2>number=3D`vmquery -w -p $SPnum | awk 'BEGIN {sum=3D0} =
{if ( $9!~/-/ &amp;&amp; NR&gt;3) {sum++}} END {print sum}'`</FONT>
</P>

<P><FONT SIZE=3D2>echo &quot;There is $number scratch tapes in the =
library&quot; &gt;&gt;$LOG</FONT>
</P>

<P><FONT SIZE=3D2>if [ $number -eq 0 ]</FONT>
<BR><FONT SIZE=3D2>then</FONT>
<BR><FONT SIZE=3D2>&nbsp; echo &quot;Warning, the library is out of =
scratch media. Please add more.&quot; | \</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; mailx -s &quot;Warning from =
`basename $0` on `hostname`&quot; $MAILADDR</FONT>
<BR><FONT SIZE=3D2>fi</FONT>
<BR><FONT SIZE=3D2>exit</FONT>
</P>
<BR>
<BR>
<BR>

<P><FONT SIZE=3D2>-----Original Message-----</FONT>
<BR><FONT SIZE=3D2>From: Timothy Arnold [<A =
HREF=3D"mailto:timothy.arnold AT becta.org DOT uk">mailto:timothy.arnold@becta.=
org.uk</A>]</FONT>
<BR><FONT SIZE=3D2>Sent: Friday, March 14, 2003 2:31 AM</FONT>
<BR><FONT SIZE=3D2>To: veritas-bu AT mailman.eng.auburn DOT edu</FONT>
<BR><FONT SIZE=3D2>Subject: [Veritas-bu] Moving tapes into scratch =
pool</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>Hi,</FONT>
</P>

<P><FONT SIZE=3D2>(Solaris 8, Netbackup 3.4.1.)</FONT>
</P>

<P><FONT SIZE=3D2>I am working on creating scripts for our operators to =
move tapes in and out</FONT>
<BR><FONT SIZE=3D2>of the library. At present, when we reinventory the =
library, the tapes are</FONT>
<BR><FONT SIZE=3D2>put in to the pool they were taken from even though =
they have expired. How</FONT>
<BR><FONT SIZE=3D2>do I automatically put them in the ScratchPool that =
I can defined? Is there</FONT>
<BR><FONT SIZE=3D2>a vmupdate argument?</FONT>
</P>

<P><FONT SIZE=3D2>Also, what do people think of a) Netbackup 4.5 and b) =
BPVault. The new</FONT>
<BR><FONT SIZE=3D2>financial year is coming up and I propose that we =
upgrade to Netbackup V4.5</FONT>
<BR><FONT SIZE=3D2>and purchase BPVault for offsite duplication.</FONT>
</P>

<P><FONT SIZE=3D2>Thanks,</FONT>
<BR><FONT SIZE=3D2>Timothy.</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>--</FONT>
<BR><FONT SIZE=3D2>Timothy Arnold, Systems Support Officer, Internet =
Services,</FONT>
<BR><FONT SIZE=3D2>Becta, Coventry, CV4 7JJ, =
UK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Voice: +44 24 =
7684 7169</FONT>
<BR><FONT SIZE=3D2>email: =
timothy.arnold AT becta.org DOT uk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fax:&nbsp;&nbsp; +44 24 =
7641 1418 </FONT>
</P>
<BR>
<BR>

<P><FONT =
SIZE=3D2>***************************************************************=
*******</FONT>
<BR><FONT SIZE=3D2>This email and any files transmitted with it are =
confidential and</FONT>
<BR><FONT SIZE=3D2>intended solely for the use of the individual or =
entity to whom they</FONT>
<BR><FONT SIZE=3D2>are addressed. If you have received this email in =
error please notify</FONT>
<BR><FONT SIZE=3D2>the system manager.</FONT>
<BR><FONT SIZE=3D2>This footnote also confirms that this email message =
has been swept by</FONT>
<BR><FONT SIZE=3D2>MIMEsweeper for the presence of computer =
viruses.</FONT>
<BR><FONT SIZE=3D2>www.mimesweeper.com</FONT>
<BR><FONT =
SIZE=3D2>***************************************************************=
*******</FONT>
</P>

<P><FONT =
SIZE=3D2>_______________________________________________</FONT>
<BR><FONT SIZE=3D2>Veritas-bu maillist&nbsp; -&nbsp; =
Veritas-bu AT mailman.eng.auburn DOT edu</FONT>
<BR><FONT SIZE=3D2><A =
HREF=3D"http://mailman.eng.auburn.edu/mailman/listinfo/veritas-bu"; =
TARGET=3D"_blank">http://mailman.eng.auburn.edu/mailman/listinfo/veritas=
-bu</A></FONT>
</P>

</BODY>
</HTML>
------_=_NextPart_001_01C2EA4B.17A45E50--

<Prev in Thread] Current Thread [Next in Thread>