Veritas-bu

[Veritas-bu] bpdbjobs script

2003-11-10 22:25:06
Subject: [Veritas-bu] bpdbjobs script
From: nick AT solnet.com DOT au (Nick Lefebvre)
Date: Tue, 11 Nov 2003 14:25:06 +1100
This is a multi-part message in MIME format.

--Boundary_(ID_QHqUSWjO1Zv9AmUHK+l7Zw)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

Thanks to Peter, Mark, David, and Alfonso for getting back to me.

 

One of the guys here, Oleg, has been working on this perl script to
strip down some of the output from the bpdbjobs command.

 

Thank you Oleg : )

 

Here it is:

 

#!/usr/bin/perl

#

# Script to make some sense of the bpdbjobs command output

# Written by Oleg Kokotovic

# Date last modified: 11.11.2003

 

# define the formats we'll need

format STDOUT_TOP =

 

                                Backup reporter

ID   Type     State      Status  Class    Schedule          Client
Date

------------------------------------------------------------------------
--------

.

 

format STDOUT =

@<<  @<<<<<<  @<<<<<<<<  @<<<<<  @<<<<<<  @<<<<<<<<<<<<<<<  @<<<<<<<
@<<<<<<<<<

$id  $type    $state     $status $class   $schedule         $client
$date

.

 

# capture command output and store in array

$cmd = `/usr/openv/netbackup/bin/admincmd/bpdbjobs -report
-all_columns`;

push @array, split (/\n/, $cmd);

 

# iterate through each of the jobs and extract useful values

foreach $b (@array) {

        ($id, $type, $state, $status, $class, $schedule, $client,
$server, @rest) = split (/,/, $b);

        $date = substr ($rest[42], 0, 10);

 

        # following 2 for loops borrowed from Peter L. Buschman's
function

        # parse_bpdbjobs. Thanks Peter 

        for( $type ) {

                /0/ and do { $type = "backup"; last };

                /1/ and do { $type = "archive"; last };

                /2/ and do { $type = "restore"; last };

        } # end for

 

        for( $state ) {

                /0/ and do { $state = "queued"; last };

                /1/ and do { $state = "active"; last };

                /2/ and do { $state = "re-queued"; last };

                /3/ and do { $state = "done"; last };

        } # end for

 

        # write the formatted output

        write;

} # end while

 

exit;

 

-----Original Message-----
From: Peter L. Buschman [mailto:plblists AT iotk DOT com] 
Sent: Tuesday, 11 November 2003 5:07 AM
To: Donaldson, Mark; 'Nick Lefebvre'; veritas-bu AT mailman.eng.auburn DOT edu
Subject: RE: [Veritas-bu] bpdbjobs script

 


Here is a Perl function that parses this output neatly.  For each line
of bpdbjobs output, pass it into parse_bpdbjobs() and you will
get back a Perl hash of key / value pairs.

--PLB

use Text::ParseWords;

##
## parse_bpdbjobs()
##
## This function is derived from the following Veritas command:
##
##   /usr/openv/netbackup/bin/admincmd/bpdbjobs
##
## --PLB 12/19/2001
##
## This function is Copyright (C) 2002 Peter L. Buschman.
## ( Derived from the NBUX Toolkit. )
##
sub parse_bpdbjobs {
  $_ = shift;
  my $tmpfile;
  chomp;
  s/'/\\'/g; # Escape any un-escaped single quotes.
  ##
  ## jobid,jobtype,state,status,class,schedule, client, server, started,
elapsed,
  ## ended, stunit, try, operation, kbytes, files, pathlastwritten,
percent,
  ## jobpid, owner, subtype, classtype, schedule_type, priority, group,
  ## masterserver, retentionunits, retentionperiod, compression,
  ## kbyteslastwritten, fileslastwritten, filelistcount, [files]...,
trycount,
  ## [trypid, trystunit, tryserver, trystarted, tryelapsed, tryended,
trystatus,
  ## trystatusdescription, trystatuscount, [trystatuslines]...,
trybyteswritten,
  ## tryfileswritten]
  ##
    my(
      $jobid,
      $jobtype,
      $state,
      $status,
      $class,
      $schedule,
      $client,
      $server,
      $started,
      $elapsed,
      $ended,
      $stunit,
      $try,
      $operation,
      $kbytes,
      $files,
      $pathlastwritten,
      $percent,
      $jobpid,
      $owner,
      $subtype,
      $classtype,
      $schedule_type,
      $priority,
      $group,
      $masterserver,
      $retentionunits,
      $retentionperiod,
      $compression,
      $kbyteslastwritten,
      $fileslastwritten,
      @files_and_tries,
    ) = parse_line(",", 0, $_);
    for( $jobtype ) {
      /0/ and do { $jobtype = "backup"    ; last };
      /1/ and do { $jobtype = "archive"   ; last };
      /2/ and do { $jobtype = "restore"   ; last };
    }
    for( $state ) {
      /0/ and do { $state = "queued"      ; last };
      /1/ and do { $state = "active"      ; last };
      /2/ and do { $state = "re-queued"   ; last };
      /3/ and do { $state = "done"        ; last };
    }
    my($filelistcount)               = shift(@files_and_tries); 
    my(@files);
    for(1..$filelistcount) {
      # Skip leading and trailing whitespace
      $tmpfile = shift @files_and_tries;
      $tmpfile =~ s/^\s*//;
      $tmpfile =~ s/\s*$//;
      push( @files, $tmpfile );
    }
    my($specifiedfiles) = join(", ", @files);
    my($trycount)                    = shift(@files_and_tries);
    my(%tries,$trynum);
    foreach $trynum (1..$trycount) {
      my($trypid)                    = shift(@files_and_tries);
      my($trystunit)                 = shift(@files_and_tries);
      my($tryserver)                 = shift(@files_and_tries);
      my($trystarted)                = shift(@files_and_tries);
      my($tryelapsed)                = shift(@files_and_tries);
      my($tryended)                  = shift(@files_and_tries);
      my($trystatus)                 = shift(@files_and_tries);
      my($trystatusdescription)      = shift(@files_and_tries);
      my($trystatuscount)            = shift(@files_and_tries);
      my(@trystatuslines);
      for(1..$trystatuscount) {
        push(@trystatuslines, shift(@files_and_tries) );
      }
      my($trystatuslines) = join("\n", @trystatuslines);
      my($trykbyteswritten)      = shift(@files_and_tries);
      my($tryfileswritten)       = shift(@files_and_tries);
      %tries = (
        %tries,
        "try_${trynum}_pid"               => "$trypid",
        "try_${trynum}_stunit"            => "$trystunit",
        "try_${trynum}_server"            => "$tryserver",
        "try_${trynum}_started"           => "$trystarted",
        "try_${trynum}_elapsed"           => "$tryelapsed",
        "try_${trynum}_ended"             => "$tryended",
        "try_${trynum}_status"            => "$trystatus",
        "try_${trynum}_statusdescription" => "$trystatusdescription",
        "try_${trynum}_statuscount"       => "$trystatuscount",
        "try_${trynum}_statuslines"       => "$trystatuslines",
        "try_${trynum}_kbyteswritten"     => "$trykbyteswritten",
        "try_${trynum}_fileswritten"      => "$tryfileswritten",
      );
    }
    my($record) = {
      jobid=>              "$jobid",
      jobtype=>            "$jobtype",
      state=>              "$state",
      status=>             "$status",
      class=>              "$class",
      schedule=>           "$schedule",
      client=>             "$client",
      server=>             "$server",
      started=>            "$started",
      elapsed=>            "$elapsed",
      ended=>              "$ended",
      stunit=>             "$stunit",
      try=>                "$try",
      operation=>          "$operation",
      kbytes=>             "$kbytes",
      files=>              "$specifiedfiles",
      path=>               "$pathlastwritten",
      percent=>            "$percent",
      jobpid=>             "$jobpid",
      owner=>              "$owner",
      subtype=>            "$subtype",
      classtype=>          "$classtype",
      schedule_type=>      "$schedule_type",
      priority=>           "$priority",
      group=>              "$group",
      masterserver=>       "$masterserver",
      retentionunits=>     "$retentionunits",
      retentionperiod=>    "$retentionperiod",
      compression=>        "$compression",
      kbyteslastwritten=>  "$kbyteslastwritten",
      fileslastwritten=>   "$fileslastwritten",
      filelistcount=>      "$filelistcount",
      files=>              "$specifiedfiles",
      trycount=>           "$trycount",
    };
    %$record = (%$record, %tries);
    return %$record;
}


At 09:46 AM 11/10/2003 -0700, Donaldson, Mark wrote:



Storage Mountain's FAQ (http://www.storagemountain.com) has a nice
writeup about this output.  The tricky thing to deal with is that the
field count per line differs by job.
 
-M

-----Original Message-----

From: Nick Lefebvre [mailto:nick AT solnet.com DOT au]

Sent: Sunday, November 09, 2003 9:02 PM

To: veritas-bu AT mailman.eng.auburn DOT edu

Subject: [Veritas-bu] bpdbjobs script

Hi,

 

I am running the following command:

 

# ./bpdbjobs report all_columns

 

The output is messy.

 

I was wondering whether anyone would have a script to turn this into
something that makes sense?

 

Thanks for your help.

 

Cheers,

 

Nick


--Boundary_(ID_QHqUSWjO1Zv9AmUHK+l7Zw)
Content-type: text/html; charset=us-ascii
Content-transfer-encoding: 7BIT

<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">


<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
tt
        {font-family:"Courier New";}
span.EmailStyle18
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks to Peter, Mark, David, and Alfonso
for getting back to me.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>One of the guys here, Oleg, has been
working on this perl script to strip down some of the output from the bpdbjobs
command.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thank you Oleg : )</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Here it is:</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>#!/usr/bin/perl</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>#</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># Script to make some sense of the bpdbjobs
command output</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># Written by Oleg 
Kokotovic</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># Date last modified: 
11.11.2003</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># define the formats we'll 
need</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>format STDOUT_TOP =</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Backup reporter</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>ID&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;
State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Status&nbsp; Class&nbsp;&nbsp;&nbsp;
Schedule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Client&nbsp;&nbsp;&nbsp; Date</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>--------------------------------------------------------------------------------</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>.</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>format STDOUT =</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>@&lt;&lt;&nbsp;
@&lt;&lt;&lt;&lt;&lt;&lt;&nbsp; @&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&nbsp;
@&lt;&lt;&lt;&lt;&lt;&nbsp; @&lt;&lt;&lt;&lt;&lt;&lt;&nbsp;
@&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&nbsp;
@&lt;&lt;&lt;&lt;&lt;&lt;&lt;&nbsp; 
@&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>$id&nbsp; $type&nbsp;&nbsp;&nbsp;
$state&nbsp;&nbsp;&nbsp;&nbsp; $status $class&nbsp;&nbsp;
$schedule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $client&nbsp;&nbsp;
$date</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>.</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># capture command output and store in 
array</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>$cmd = 
`/usr/openv/netbackup/bin/admincmd/bpdbjobs
-report -all_columns`;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>push @array, split (/\n/, 
$cmd);</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'># iterate through each of the jobs and
extract useful values</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>foreach $b (@array) {</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
($id, $type, $state, $status, $class, $schedule, $client, $server, @rest) =
split (/,/, $b);</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$date = substr ($rest[42], 0, 10);</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# following 2 for loops borrowed from Peter L. Buschman's 
function</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
parse_bpdbjobs. Thanks Peter </span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
for(
$type ) {</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/0/ and do { $type = &quot;backup&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/1/ and do { $type = &quot;archive&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/2/ and do { $type = &quot;restore&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}
# end for</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
for(
$state ) {</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/0/ and do { $state = &quot;queued&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/1/ and do { $state = &quot;active&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/2/ and do { $state = &quot;re-queued&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/3/ and do { $state = &quot;done&quot;; last };</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} # end for</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# write the formatted output</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
write;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>} # end while</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>exit;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> Peter L. Buschman
[mailto:plblists AT iotk DOT com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> </span></font><font size=2 
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>Tuesday, 11
 November 2003</span></font><font size=2 face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> </span></font><font size=2 face=Tahoma><span
 style='font-size:10.0pt;font-family:Tahoma'>5:07 AM</span></font><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>To:</span></b> Donaldson, Mark; 'Nick
Lefebvre'; veritas-bu AT mailman.eng.auburn DOT edu<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Veritas-bu] bpdbjobs
script</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
Here is a Perl function that parses this output neatly.&nbsp; For each line of
bpdbjobs output, pass it into parse_bpdbjobs() and you will<br>
get back a Perl hash of key / value pairs.<br>
<br>
--PLB<br>
<br>
</span></font><tt><font size=2 face="Courier New"><span 
style='font-size:10.0pt'>use
Text::ParseWords;</span></font></tt><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><br>
<br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">## parse_bpdbjobs()</font></tt><br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">## This function is derived from the following
Veritas command:</font></tt><br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">##&nbsp;&nbsp;
/usr/openv/netbackup/bin/admincmd/bpdbjobs</font></tt><br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">## --PLB </font></tt></span></font><tt><font 
size=2 face="Courier New"><span 
style='font-size:10.0pt'>12/19/2001</span></font></tt><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier 
New"'><br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">## This function is Copyright (C) 2002 Peter L.
Buschman.</font></tt><br>
<tt><font face="Courier New">## ( Derived from the NBUX Toolkit. 
)</font></tt><br>
<tt><font face="Courier New">##</font></tt><br>
<tt><font face="Courier New">sub parse_bpdbjobs {</font></tt><br>
<tt><font face="Courier New">&nbsp; $_ = shift;</font></tt><br>
<tt><font face="Courier New">&nbsp; my $tmpfile;</font></tt><br>
<tt><font face="Courier New">&nbsp; chomp;</font></tt><br>
<tt><font face="Courier New">&nbsp; s/'/\\'/g; # Escape any un-escaped single
quotes.</font></tt><br>
<tt><font face="Courier New">&nbsp; ##</font></tt><br>
<tt><font face="Courier New">&nbsp; ##
jobid,jobtype,state,status,class,schedule, client, server, started, 
elapsed,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## ended, stunit, try, operation, kbytes,
files, pathlastwritten, percent,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## jobpid, owner, subtype, classtype,
schedule_type, priority, group,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## masterserver, retentionunits,
retentionperiod, compression,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## kbyteslastwritten, fileslastwritten,
filelistcount, [files]..., trycount,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## [trypid, trystunit, tryserver, 
trystarted,
tryelapsed, tryended, trystatus,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## trystatusdescription, trystatuscount,
[trystatuslines]..., trybyteswritten,</font></tt><br>
<tt><font face="Courier New">&nbsp; ## tryfileswritten]</font></tt><br>
<tt><font face="Courier New">&nbsp; ##</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; my(</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$jobid,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$jobtype,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$state,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$status,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$class,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$schedule,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$client,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$server,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$started,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$elapsed,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$ended,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$stunit,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$try,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$operation,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$kbytes,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$files,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$pathlastwritten,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$percent,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$jobpid,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$owner,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$subtype,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$classtype,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$schedule_type,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$priority,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$group,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$masterserver,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$retentionunits,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$retentionperiod,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$compression,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$kbyteslastwritten,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$fileslastwritten,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
@files_and_tries,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; ) = parse_line(&quot;,&quot;,
0, $_);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; for( $jobtype ) 
{</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /0/ and do {
$jobtype = &quot;backup&quot;&nbsp;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /1/ and do {
$jobtype = &quot;archive&quot;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /2/ and do {
$jobtype = &quot;restore&quot;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; }</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; for( $state ) {</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /0/ and do { $state
= &quot;queued&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /1/ and do { $state
= &quot;active&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /2/ and do { $state
= &quot;re-queued&quot;&nbsp;&nbsp; ; last };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /3/ and do { $state
= &quot;done&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; last 
};</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; }</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;
my($filelistcount)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries); </font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; my(@files);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; for(1..$filelistcount) 
{</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Skip leading and
trailing whitespace</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmpfile = shift
@files_and_tries;</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmpfile =~
s/^\s*//;</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmpfile =~
s/\s*$//;</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push( @files,
$tmpfile );</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; }</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; my($specifiedfiles) =
join(&quot;, &quot;, @files);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;
my($trycount)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; 
my(%tries,$trynum);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; foreach $trynum (1..$trycount)
{</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trypid)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trystunit)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($tryserver)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trystarted)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($tryelapsed)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($tryended)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trystatus)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trystatusdescription)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trystatuscount)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my(@trystatuslines);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for(1..$trystatuscount) {</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push(@trystatuslines, shift(@files_and_tries) );</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my($trystatuslines)
= join(&quot;\n&quot;, @trystatuslines);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($trykbyteswritten)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 
shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
my($tryfileswritten)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
shift(@files_and_tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %tries = 
(</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
%tries,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_pid&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$trypid&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_stunit&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$trystunit&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_server&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$tryserver&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_started&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$trystarted&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_elapsed&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$tryelapsed&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_ended&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$tryended&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_status&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=&gt; &quot;$trystatus&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_statusdescription&quot; =&gt;
&quot;$trystatusdescription&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_statuscount&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;
&quot;$trystatuscount&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_statuslines&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;
&quot;$trystatuslines&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_kbyteswritten&quot;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;
&quot;$trykbyteswritten&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;try_${trynum}_fileswritten&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt;
&quot;$tryfileswritten&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; }</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; my($record) = {</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jobid=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$jobid&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jobtype=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$jobtype&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
state=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$state&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
status=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$status&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
class=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$class&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
schedule=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$schedule&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
client=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$client&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
server=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$server&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
started=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$started&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
elapsed=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$elapsed&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ended=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$ended&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
stunit=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$stunit&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
try=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$try&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operation=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$operation&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
kbytes=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$kbytes&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
files=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$specifiedfiles&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
path=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$pathlastwritten&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
percent=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$percent&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jobpid=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$jobpid&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
owner=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$owner&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
subtype=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$subtype&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
classtype=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$classtype&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
schedule_type=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&quot;$schedule_type&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
priority=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$priority&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
group=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$group&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
masterserver=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$masterserver&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
retentionunits=&gt;&nbsp;&nbsp;&nbsp;&nbsp; 
&quot;$retentionunits&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
retentionperiod=&gt;&nbsp;&nbsp;&nbsp; 
&quot;$retentionperiod&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
compression=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$compression&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
kbyteslastwritten=&gt;&nbsp; &quot;$kbyteslastwritten&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fileslastwritten=&gt;&nbsp;&nbsp; &quot;$fileslastwritten&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
filelistcount=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&quot;$filelistcount&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
files=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$specifiedfiles&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
trycount=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;$trycount&quot;,</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; };</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; %$record = (%$record, 
%tries);</font></tt><br>
<tt><font face="Courier New">&nbsp;&nbsp;&nbsp; return %$record;</font></tt><br>
<tt><font face="Courier New">}</font></tt><br>
<br>
<br>
</span></font>At 09:46 AM 11/10/2003 -0700, Donaldson, Mark wrote:<br>
<br>
</p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=blue
  face=Arial><span 
style='font-size:10.0pt;font-family:Arial;color:blue'>Storage</span></font><font
 size=2 color=blue face=Arial><span style='font-size:10.0pt;font-family:Arial;
 color:blue'> </span></font><font size=2 color=blue face=Arial><span
  
style='font-size:10.0pt;font-family:Arial;color:blue'>Mountain</span></font><font
size=2 color=blue face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:blue'>'s FAQ (<a 
href="http://www.storagemountain.com";>http://www.storagemountain.com</a>)
has a nice writeup about this output.&nbsp; The tricky thing to deal with is
that the field count per line differs by job.</span></font><br>
&nbsp;<br>
<font size=2 color=blue face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:blue'>-M</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original 
Message-----</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>From: Nick Lefebvre [<a
href="mailto:nick AT solnet.com DOT au" eudora=autourl>mailto:nick AT 
solnet.com DOT au</a>]</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>Sent: </span></font><font size=2 
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>Sunday,
 November 09, 2003</span></font><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'> </span></font><font
 size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>9:02 
PM</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>To:
veritas-bu AT mailman.eng.auburn DOT edu</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:
Tahoma'>Subject: [Veritas-bu] bpdbjobs script</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>Hi,</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>I
am running the following command:</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>#
./bpdbjobs report all_columns</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>The
output is messy.</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>I
was wondering whether anyone would have a script to turn this into something
that makes sense?</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>Thanks
for your help.</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=2 face=Arial><span 
style='font-size:10.0pt;font-family:Arial'>Cheers,</span></font></p>

<p class=MsoNormal style='margin-right:0cm;margin-bottom:12.0pt;margin-left:
72.0pt'><font size=3 face="Times New Roman"><span 
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>Nick</span></font></p>

</div>

</body>

</html>

--Boundary_(ID_QHqUSWjO1Zv9AmUHK+l7Zw)--

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