Article Figure 1 Listing 1 Listing 2 Listing 3 mar2004.tar

Listing 2 co_backperf.pl

#!/usr/bin/perl -w

# purpose: collect bpimage output
# and store in db

use DBI;
use Data::Dumper;
use strict;

my $success = 0;
my $failure = 0;
my @failures;

# Connect to DB
my $database = 'nbperf';
my $hostname = 'databaseserver';
my $dsn = "DBI:mysql:database=$database;host=$hostname";

my $user = 'database_user';
my $password = 'password';
my $dbh = DBI->connect($dsn, $user, $password); 

# list the systems to collect data on
my @systems = ('server1','server2');

foreach my $system (@systems) {
  my $host=$system;
  print "\n--> Trying $host \n";
  my $local_user="root";
  my $remote_user="root";
  # get all image data since 1980 aka everything
  my $cmd=" /opt/openv/netbackup/bin/admincmd/bpimagelist   -d 01/01/1980";

  my $query = qq{
      
  };

  my @lines;
  if (@lines = `rsh $host $cmd`) {
     $success++;
     print "Parsing, $host, stage 1:  ";
     print "Got " . scalar(@lines) . " lines \n";
     foreach my $line (@lines) {
         my ($backupid, $seconds, $client, $schedtype, $kb, $num_files);
         my ($kbpersec, $policy, $backdate, $backserver);
         if ($line =~ /IMAGE/) {
            my @fields;
            (@fields)  = split(/\s+/,$line);
            $backupid  = $fields[5];
            $seconds   = $fields[14];
            $client    = $fields[1];
            $schedtype = $fields[11];
            $kb        = $fields[18];
            $num_files = $fields[19];
            $kbpersec  = ($kb/$seconds);
            $policy    = $fields[6];
            $backdate  = $fields[13];
            $backserver= $host;
            $backdate  = &humantime($backdate);

            print "Updating database... \n";
            $query = qq{
                   INSERT INTO backperf 
                     (backupid, seconds, client, schedtype, kbytes,
                      numfiles, kbpersec, policy, backdate, backserver)
                                      values
                     ('$backupid', '$seconds', '$client', '$schedtype',
                      '$kb', '$num_files', $kbpersec, '$policy', 
                      '$backdate', '$backserver')
            };
            print $query;
            my $sth = $dbh->prepare($query);
            $sth->execute;
         } # end up line record for each image
     }

  } else {
     $failure++;
     push(@failures, $host);
  }

}

print "Total success: $success \n";
print "Total fails: $failure \n";
($failure>0) && print "Failed systems: @failures \n";

#################
sub humantime {
 # convert a unix time to human readable time
 my $time_req = shift;
 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = \
     localtime($time_req);
 $year = 1900+$year;
 $mon++;
 my $humantime =  "$year-$mon-$mday $hour:$min:$sec \n";
 return $humantime;
}