Veritas-bu

[Veritas-bu] NB report

2002-03-15 14:20:49
Subject: [Veritas-bu] NB report
From: plb AT iotk DOT com (Peter L. Buschman)
Date: Fri, 15 Mar 2002 20:20:49 +0100
--=====================_31464824==_
Content-Type: multipart/alternative;
        boundary="=====================_31464834==_.ALT"

--=====================_31464834==_.ALT
Content-Type: text/plain; charset="us-ascii"; format=flowed


Vidit:

As requested.  Requirements are Perl 5.6.1, NBUX, and NetBackup.*

I will add this script to the NBUX examples/ directory in the next release 
as well.

Best regards,

--PLB

#!/usr/bin/perl
###
### nbux_monthly_summary
###
### An example monthly backup total report with per-day break-out.
###
### Based on a request by Vidit Kohli on the Veritas-bu mailing list.
###
### --PLB 03/15/2002
###
### DESCRIPTION
###
### This script takes optional day, client, and class parameters. If a day
### is given, the month in which that day occurred will be reported.  If a
### client is given, only data for that client will be totalled.  If a class
### is given, only data for that class will be totalled. A client and class
### parameter together are evaluated with a logical AND.
###
### If no date is given, the report will default to the present month.
###
### EXAMPLES
###
###   perl nbux_monthly_summary -d 12/01/2001
###   perl nbux_monthly_summary -c harry
###   perl nbux_monthly_summary -c harry -g hogwarts
###

use Time::ParseDate;
use Getopt::Std;
use POSIX qw( strftime );
use NBUX;

getopts('hd:c:g:');

if( $opt_h ) {
   print("Usage: $0 [ -d mm/dd/yy ] [ -c <client> ] [ -g <class> ]\n");
   exit(1);
}

$CLIENT = 0 || $opt_c;
$CLASS  = 0 || $opt_g;

push(@search_pattern, "(\$record->{client} =~ m/^$CLIENT\$/i)" ) if $CLIENT;
push(@search_pattern, "(\$record->{class} =~ m/^$CLASS\$/i)")    if $CLASS;

$START_SECONDS = $opt_d ? parsedate $opt_d : time();
$END_SECONDS   = $START_SECONDS + 60 * 60 * 24 * 32;

$START_TIME    = strftime("%a %b 01 00:00:00 %Y", localtime($START_SECONDS) );
$END_TIME      = strftime("%a %b 01 00:00:00 %Y", localtime($END_SECONDS) );

$START_SECONDS = parsedate $START_TIME;
$END_SECONDS   = parsedate $END_TIME;

for( $i = $START_SECONDS; $i < $END_SECONDS; $i += 86400 ) {
   $totals_by_day{$i} = 0;
}

$code = <<__EOD__;
#
# Include images that were backed-up in our time window.
#
(
   ( \$record->{backup_time} >= $START_SECONDS ) &&
   ( \$record->{backup_time} <= $END_SECONDS )
)
__EOD__

$code .= "&& " . join(" && ", @search_pattern ) if @search_pattern;

%images = bpimagelist($code);

foreach $image_id ( keys(%images) ) {

   $image = $images{ $image_id };

   $total += $image->{kilobytes};

   $dayslot = ( $image->{backup_time} - ($image->{backup_time} % 86400) );
   $totals_by_day{$dayslot} += $image->{kilobytes};

}

print 
"-------------------------------------------------------------------------------\n";
print "                      Backup Totals Report\n";
print 
"-------------------------------------------------------------------------------\n";
print "              Start of Report : $START_TIME\n";
print "              End of Report   : $END_TIME\n";
print 
"-------------------------------------------------------------------------------\n";
print "\n";
print "MONTHLY TOTAL BY DAY\n";
print "\n";
print "Client: $CLIENT\n" if $CLIENT;
print "Class:  $CLASS\n"  if $CLASS;
print "\n";
foreach $day (sort(keys(%totals_by_day))) {
   printf( "  %s: %9.2f MB  %6.2f GB\n",
           strftime("%a, %b %d", localtime($day) ),
           $totals_by_day{$day} / 1000,
           $totals_by_day{$day} / 1000000,
         );
}
print "\n";
printf("Monthly Total for %s: %9.2f MB  %6.2f GB\n",
        strftime("%B %Y", localtime($START_SECONDS) ),
        $total / 1000,
        $total / 1000000,
       );
print "\n";
print 
"-------------------------------------------------------------------------------\n";

At 09:37 PM 03/13/2002 +0000, vidit kohli wrote:
>hi
>
>Any one has a report genration script which can give daily output for a 
>particular client server only with total size of data backed up.
>
>also wants to generated report for that customer for entire month with 
>total bytes of data backed up breaking it with date.
>
>
>help is needed urgently
>
>thanks
>
>vidit
>
>_________________________________________________________________
>Join the world's largest e-mail service with MSN Hotmail. 
>http://www.hotmail.com
>
>_______________________________________________
>Veritas-bu maillist  -  Veritas-bu AT mailman.eng.auburn DOT edu
>http://mailman.eng.auburn.edu/mailman/listinfo/veritas-bu

--=====================_31464834==_.ALT
Content-Type: text/html; charset="us-ascii"

<html>
<br>
Vidit:<br>
<br>
As requested.&nbsp; Requirements are Perl 5.6.1, NBUX, and
NetBackup.*<br>
<br>
I will add this script to the NBUX examples/ directory in the next
release as well.<br>
<br>
Best regards,<br>
<br>
--PLB<br>
<br>
<tt>#!/usr/bin/perl<br>
###<br>
### nbux_monthly_summary<br>
###<br>
### An example monthly backup total report with per-day break-out.<br>
###<br>
### Based on a request by Vidit Kohli on the Veritas-bu mailing
list.<br>
###<br>
### --PLB 03/15/2002<br>
###<br>
### DESCRIPTION<br>
###<br>
### This script takes optional day, client, and class parameters. If a
day<br>
### is given, the month in which that day occurred will be
reported.&nbsp; If a<br>
### client is given, only data for that client will be totalled.&nbsp; If
a class<br>
### is given, only data for that class will be totalled. A client and
class<br>
### parameter together are evaluated with a logical AND.<br>
###<br>
### If no date is given, the report will default to the present
month.<br>
###<br>
### EXAMPLES<br>
###<br>
###&nbsp;&nbsp; perl nbux_monthly_summary -d 12/01/2001<br>
###&nbsp;&nbsp; perl nbux_monthly_summary -c harry<br>
###&nbsp;&nbsp; perl nbux_monthly_summary -c harry -g hogwarts<br>
###<br>
<br>
use Time::ParseDate;<br>
use Getopt::Std;<br>
use POSIX qw( strftime );<br>
use NBUX;<br>
<br>
getopts('hd:c:g:');<br>
<br>
if( $opt_h ) {<br>
&nbsp; print(&quot;Usage: $0 [ -d mm/dd/yy ] [ -c &lt;client&gt; ] [ -g
&lt;class&gt; ]\n&quot;);<br>
&nbsp; exit(1);<br>
}<br>
<br>
$CLIENT = 0 || $opt_c;<br>
$CLASS&nbsp; = 0 || $opt_g;<br>
<br>
push(@search_pattern, &quot;(\$record-&gt;{client} =~
m/^$CLIENT\$/i)&quot; ) if $CLIENT;<br>
push(@search_pattern, &quot;(\$record-&gt;{class} =~
m/^$CLASS\$/i)&quot;)&nbsp;&nbsp;&nbsp; if $CLASS;<br>
<br>
$START_SECONDS = $opt_d ? parsedate $opt_d : time();<br>
$END_SECONDS&nbsp;&nbsp; = $START_SECONDS + 60 * 60 * 24 * 32;<br>
<br>
$START_TIME&nbsp;&nbsp;&nbsp; = strftime(&quot;%a %b 01 00:00:00
%Y&quot;, localtime($START_SECONDS) );<br>
$END_TIME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = strftime(&quot;%a %b 01
00:00:00 %Y&quot;, localtime($END_SECONDS) );<br>
<br>
$START_SECONDS = parsedate $START_TIME;<br>
$END_SECONDS&nbsp;&nbsp; = parsedate $END_TIME;<br>
<br>
for( $i = $START_SECONDS; $i &lt; $END_SECONDS; $i += 86400 ) {<br>
&nbsp; $totals_by_day{$i} = 0;<br>
}<br>
<br>
$code = &lt;&lt;__EOD__;<br>
#<br>
# Include images that were backed-up in our time window.<br>
#<br>
(<br>
&nbsp; ( \$record-&gt;{backup_time} &gt;= $START_SECONDS )
&amp;&amp;<br>
&nbsp; ( \$record-&gt;{backup_time} &lt;= $END_SECONDS )<br>
)<br>
__EOD__<br>
<br>
$code .= &quot;&amp;&amp; &quot; . join(&quot; &amp;&amp; &quot;,
@search_pattern ) if @search_pattern;<br>
<br>
%images = bpimagelist($code);<br>
<br>
foreach $image_id ( keys(%images) ) {<br>
<br>
&nbsp; $image = $images{ $image_id };<br>
<br>
&nbsp; $total += $image-&gt;{kilobytes};<br>
<br>
&nbsp; $dayslot = ( $image-&gt;{backup_time} - ($image-&gt;{backup_time}
% 86400) );<br>
&nbsp; $totals_by_day{$dayslot} += $image-&gt;{kilobytes};<br>
<br>
}<br>
<br>
print
&quot;-------------------------------------------------------------------------------\n&quot;;<br>
print
&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Backup Totals Report\n&quot;;<br>
print
&quot;-------------------------------------------------------------------------------\n&quot;;<br>
print
&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Start of Report : $START_TIME\n&quot;;<br>
print
&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
End of Report&nbsp;&nbsp; : $END_TIME\n&quot;;<br>
print
&quot;-------------------------------------------------------------------------------\n&quot;;<br>
print &quot;\n&quot;;<br>
print &quot;MONTHLY TOTAL BY DAY\n&quot;;<br>
print &quot;\n&quot;;<br>
print &quot;Client: $CLIENT\n&quot; if $CLIENT;<br>
print &quot;Class:&nbsp; $CLASS\n&quot;&nbsp; if $CLASS;<br>
print &quot;\n&quot;;<br>
foreach $day (sort(keys(%totals_by_day))) {<br>
&nbsp; printf( &quot;&nbsp; %s: %9.2f MB&nbsp; %6.2f GB\n&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strftime(&quot;%a,
%b %d&quot;, localtime($day) ),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$totals_by_day{$day} / 1000,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$totals_by_day{$day} / 1000000,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>
}<br>
print &quot;\n&quot;;<br>
printf(&quot;Monthly Total for %s: %9.2f MB&nbsp; %6.2f GB\n&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strftime(&quot;%B %Y&quot;,
localtime($START_SECONDS) ),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $total / 1000,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $total / 1000000,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>
print &quot;\n&quot;;<br>
print
&quot;-------------------------------------------------------------------------------\n&quot;;<br>
<br>
</tt>At 09:37 PM 03/13/2002 +0000, vidit kohli wrote:<br>
<blockquote type=cite class=cite cite>hi<br>
<br>
Any one has a report genration script which can give daily output for a
particular client server only with total size of data backed up.<br>
<br>
also wants to generated report for that customer for entire month with
total bytes of data backed up breaking it with date.<br>
<br>
<br>
help is needed urgently<br>
<br>
thanks<br>
<br>
vidit<br>
<br>
_________________________________________________________________<br>
Join the world?s largest e-mail service with MSN Hotmail.
<a href="http://www.hotmail.com/"; 
eudora="autourl">http://www.hotmail.com</a><br>
<br>
_______________________________________________<br>
Veritas-bu maillist&nbsp; -&nbsp; Veritas-bu AT mailman.eng.auburn DOT edu<br>
<a href="http://mailman.eng.auburn.edu/mailman/listinfo/veritas-bu"; 
eudora="autourl">http://mailman.eng.auburn.edu/mailman/listinfo/veritas-bu</a><br>
</blockquote></html>

--=====================_31464834==_.ALT--

--=====================_31464824==_
Content-Type: application/octet-stream; name="nbux_monthly_summary"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="nbux_monthly_summary"

IyEvdXNyL2Jpbi9wZXJsCiMjIwojIyMgbmJ1eF9tb250aGx5X3N1bW1hcnkKIyMjCiMjIyBBbiBl
eGFtcGxlIG1vbnRobHkgYmFja3VwIHRvdGFsIHJlcG9ydCB3aXRoIHBlci1kYXkgYnJlYWstb3V0
LgojIyMKIyMjIEJhc2VkIG9uIGEgcmVxdWVzdCBieSBWaWRpdCBLb2hsaSBvbiB0aGUgVmVyaXRh
cy1idSBtYWlsaW5nIGxpc3QuCiMjIwojIyMgLS1QTEIgMDMvMTUvMjAwMgojIyMKIyMjIERFU0NS
SVBUSU9OCiMjIwojIyMgVGhpcyBzY3JpcHQgdGFrZXMgb3B0aW9uYWwgZGF5LCBjbGllbnQsIGFu
ZCBjbGFzcyBwYXJhbWV0ZXJzLiBJZiBhIGRheQojIyMgaXMgZ2l2ZW4sIHRoZSBtb250aCBpbiB3
aGljaCB0aGF0IGRheSBvY2N1cnJlZCB3aWxsIGJlIHJlcG9ydGVkLiAgSWYgYQojIyMgY2xpZW50
IGlzIGdpdmVuLCBvbmx5IGRhdGEgZm9yIHRoYXQgY2xpZW50IHdpbGwgYmUgdG90YWxsZWQuICBJ
ZiBhIGNsYXNzCiMjIyBpcyBnaXZlbiwgb25seSBkYXRhIGZvciB0aGF0IGNsYXNzIHdpbGwgYmUg
dG90YWxsZWQuIEEgY2xpZW50IGFuZCBjbGFzcwojIyMgcGFyYW1ldGVyIHRvZ2V0aGVyIGFyZSBl
dmFsdWF0ZWQgd2l0aCBhIGxvZ2ljYWwgQU5ELgojIyMKIyMjIElmIG5vIGRhdGUgaXMgZ2l2ZW4s
IHRoZSByZXBvcnQgd2lsbCBkZWZhdWx0IHRvIHRoZSBwcmVzZW50IG1vbnRoLgojIyMKIyMjIEVY
QU1QTEVTCiMjIwojIyMgICBwZXJsIG5idXhfbW9udGhseV9zdW1tYXJ5IC1kIDEyLzAxLzIwMDEK
IyMjICAgcGVybCBuYnV4X21vbnRobHlfc3VtbWFyeSAtYyBoYXJyeQojIyMgICBwZXJsIG5idXhf
bW9udGhseV9zdW1tYXJ5IC1jIGhhcnJ5IC1nIGhvZ3dhcnRzCiMjIwoKdXNlIFRpbWU6OlBhcnNl
RGF0ZTsKdXNlIEdldG9wdDo6U3RkOwp1c2UgUE9TSVggcXcoIHN0cmZ0aW1lICk7CnVzZSBOQlVY
OwoKZ2V0b3B0cygnaGQ6YzpnOicpOwoKaWYoICRvcHRfaCApIHsKICBwcmludCgiVXNhZ2U6ICQw
IFsgLWQgbW0vZGQveXkgXSBbIC1jIDxjbGllbnQ+IF0gWyAtZyA8Y2xhc3M+IF1cbiIpOwogIGV4
aXQoMSk7Cn0KCiRDTElFTlQgPSAwIHx8ICRvcHRfYzsKJENMQVNTICA9IDAgfHwgJG9wdF9nOwoK
cHVzaChAc2VhcmNoX3BhdHRlcm4sICIoXCRyZWNvcmQtPntjbGllbnR9ID1+IG0vXiRDTElFTlRc
JC9pKSIgKSBpZiAkQ0xJRU5UOwpwdXNoKEBzZWFyY2hfcGF0dGVybiwgIihcJHJlY29yZC0+e2Ns
YXNzfSA9fiBtL14kQ0xBU1NcJC9pKSIpICAgIGlmICRDTEFTUzsKCiRTVEFSVF9TRUNPTkRTID0g
JG9wdF9kID8gcGFyc2VkYXRlICRvcHRfZCA6IHRpbWUoKTsKJEVORF9TRUNPTkRTICAgPSAkU1RB
UlRfU0VDT05EUyArIDYwICogNjAgKiAyNCAqIDMyOwoKJFNUQVJUX1RJTUUgICAgPSBzdHJmdGlt
ZSgiJWEgJWIgMDEgMDA6MDA6MDAgJVkiLCBsb2NhbHRpbWUoJFNUQVJUX1NFQ09ORFMpICk7CiRF
TkRfVElNRSAgICAgID0gc3RyZnRpbWUoIiVhICViIDAxIDAwOjAwOjAwICVZIiwgbG9jYWx0aW1l
KCRFTkRfU0VDT05EUykgKTsKCiRTVEFSVF9TRUNPTkRTID0gcGFyc2VkYXRlICRTVEFSVF9USU1F
OwokRU5EX1NFQ09ORFMgICA9IHBhcnNlZGF0ZSAkRU5EX1RJTUU7Cgpmb3IoICRpID0gJFNUQVJU
X1NFQ09ORFM7ICRpIDwgJEVORF9TRUNPTkRTOyAkaSArPSA4NjQwMCApIHsKICAkdG90YWxzX2J5
X2RheXskaX0gPSAwOwp9CgokY29kZSA9IDw8X19FT0RfXzsKIwojIEluY2x1ZGUgaW1hZ2VzIHRo
YXQgd2VyZSBiYWNrZWQtdXAgaW4gb3VyIHRpbWUgd2luZG93LgojCigKICAoIFwkcmVjb3JkLT57
YmFja3VwX3RpbWV9ID49ICRTVEFSVF9TRUNPTkRTICkgJiYKICAoIFwkcmVjb3JkLT57YmFja3Vw
X3RpbWV9IDw9ICRFTkRfU0VDT05EUyApCikKX19FT0RfXwoKJGNvZGUgLj0gIiYmICIgLiBqb2lu
KCIgJiYgIiwgQHNlYXJjaF9wYXR0ZXJuICkgaWYgQHNlYXJjaF9wYXR0ZXJuOwoKJWltYWdlcyA9
IGJwaW1hZ2VsaXN0KCRjb2RlKTsKCmZvcmVhY2ggJGltYWdlX2lkICgga2V5cyglaW1hZ2VzKSAp
IHsKCiAgJGltYWdlID0gJGltYWdlc3sgJGltYWdlX2lkIH07CgogICR0b3RhbCArPSAkaW1hZ2Ut
PntraWxvYnl0ZXN9OwoKICAkZGF5c2xvdCA9ICggJGltYWdlLT57YmFja3VwX3RpbWV9IC0gKCRp
bWFnZS0+e2JhY2t1cF90aW1lfSAlIDg2NDAwKSApOwogICR0b3RhbHNfYnlfZGF5eyRkYXlzbG90
fSArPSAkaW1hZ2UtPntraWxvYnl0ZXN9OwoKfQoKcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1cbiI7CnByaW50ICIgICAgICAgICAgICAgICAgICAgICAgQmFja3VwIFRvdGFscyBSZXBvcnRc
biI7CnByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwpwcmludCAiICAgICAgICAgICAg
ICBTdGFydCBvZiBSZXBvcnQgOiAkU1RBUlRfVElNRVxuIjsKcHJpbnQgIiAgICAgICAgICAgICAg
RW5kIG9mIFJlcG9ydCAgIDogJEVORF9USU1FXG4iOwpwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIjsKcHJpbnQgIlxuIjsKcHJpbnQgIk1PTlRITFkgVE9UQUwgQlkgREFZXG4iOwpwcmlu
dCAiXG4iOwpwcmludCAiQ2xpZW50OiAkQ0xJRU5UXG4iIGlmICRDTElFTlQ7CnByaW50ICJDbGFz
czogICRDTEFTU1xuIiAgaWYgJENMQVNTOwpwcmludCAiXG4iOwpmb3JlYWNoICRkYXkgKHNvcnQo
a2V5cygldG90YWxzX2J5X2RheSkpKSB7CiAgcHJpbnRmKCAiICAlczogJTkuMmYgTUIgICU2LjJm
IEdCXG4iLCAKICAgICAgICAgIHN0cmZ0aW1lKCIlYSwgJWIgJWQiLCBsb2NhbHRpbWUoJGRheSkg
KSwKICAgICAgICAgICR0b3RhbHNfYnlfZGF5eyRkYXl9IC8gMTAwMCwKICAgICAgICAgICR0b3Rh
bHNfYnlfZGF5eyRkYXl9IC8gMTAwMDAwMCwKICAgICAgICApOwp9CnByaW50ICJcbiI7CnByaW50
ZigiTW9udGhseSBUb3RhbCBmb3IgJXM6ICU5LjJmIE1CICAlNi4yZiBHQlxuIiwKICAgICAgIHN0
cmZ0aW1lKCIlQiAlWSIsIGxvY2FsdGltZSgkU1RBUlRfU0VDT05EUykgKSwKICAgICAgICR0b3Rh
bCAvIDEwMDAsCiAgICAgICAkdG90YWwgLyAxMDAwMDAwLAogICAgICApOwpwcmludCAiXG4iOwpw
cmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsK
--=====================_31464824==_--


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