1: #!/usr/bin/perl -w
   2: 
   3: #Use instead of the un-human-readable output from the #bpdbjobs -report -all_columns command.
   4: <code>
   5: use strict;
   6: $ENV{PATH} = 
   7: '/bin:/usr/bin:/usr/openv/netbackup/bin:/usr/openv/netbackup/bin/admincmd:/usr/openv/volmgr/bin';
   8: sub formattime {
   9: my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
  10: = localtime(shift);
  11: return sprintf('%04d/%02d/%02d %02d:%02d:%02d',
  12: $year + 1900, $mon + 1, $mday,
  13: $hour, $min, $sec);
  14: }sub formathour {
  15: my $sec  = shift;
  16: my $min  = $sec / 60; $sec %= 60;
  17: my $hour = $min / 60; $min %= 60;
  18: return sprintf('%02d:%02d:%02d', $hour, $min, $sec);
  19: }my %images;
  20: open(BPIMAGELIST, join(' ', "bpimagelist -l", @ARGV, '|'))
  21: or die "Can't exec bpimagelist: $@\n";
  22: my $image;
  23: while (<BPIMAGELIST>) {
  24: if (/^IMAGE/) {
  25: my ($client, $id, $class, $sched, $started,
  26: $elapsed, $kbytes, $files, $keyword) =
  27: (split)[1, 5, 6, 10, 13, 14, 18, 19, 31];
  28: my $idsuffix = $id;
  29: $idsuffix =~ s/.*_//;
  30: $image = $images{$id} = {
  31: client  => $client,
  32: id      => $idsuffix,
  33: class   => $class,
  34: sched   => $sched,
  35: started => $started,
  36: elapsed => $elapsed,
  37: kbytes  => $kbytes,
  38: files   => $files,
  39: keyword => $keyword,
  40: tapes   => {},
  41: };
  42: } elsif (/^FRAG/) {
  43: ++$image->{tapes}{(split)[8]};
  44: }}close(BPIMAGELIST);
  45: $= = 2 + scalar keys %images;
  46: my ($i, $tapes);
  47: foreach $i (sort { $a->{started} <=> $b->{started} } values %images) {
  48: $tapes = join(' ', sort keys %{$i->{tapes}});
  49: write;
  50: }format STDOUT_TOP =
  51: Client       ID         Class       Schedule    Started             Elapsed  Keyword            Kbytes    Files Tapes
  52: ------------ ---------- ----------- ----------- ------------------- -------- ------------ ------------ -------- -------------------- 
  53: .
  54: format STDOUT =
  55: @<<<<<<<<<<< @>>>>>>>>> @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<<<<<<<<<< @<<<<<<< @<<<<<<<<<<< @>>>>>>>>>>> @>>>>>>> ^<<<<<<<<<<<<<<<<<<<<
  56: $i->{client}, $i->{id}, $i->{class}, $i->{sched}, formattime($i->{started}), formathour($i->{elapsed}), $i->{keyword}, $i->{kbytes}, $i->{files}, $tapes
  57: ~~                                                                                                              ^<<<<<<<<<<<<<<<<<<<<
  58: $tapes
  59: </code>
  60: