--=====================_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. 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. If a<br>
### client is given, only data for that client will be totalled. 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>
### perl nbux_monthly_summary -d 12/01/2001<br>
### perl nbux_monthly_summary -c harry<br>
### 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>
print("Usage: $0 [ -d mm/dd/yy ] [ -c <client> ] [ -g
<class> ]\n");<br>
exit(1);<br>
}<br>
<br>
$CLIENT = 0 || $opt_c;<br>
$CLASS = 0 || $opt_g;<br>
<br>
push(@search_pattern, "(\$record->{client} =~
m/^$CLIENT\$/i)" ) if $CLIENT;<br>
push(@search_pattern, "(\$record->{class} =~
m/^$CLASS\$/i)") if $CLASS;<br>
<br>
$START_SECONDS = $opt_d ? parsedate $opt_d : time();<br>
$END_SECONDS = $START_SECONDS + 60 * 60 * 24 * 32;<br>
<br>
$START_TIME = strftime("%a %b 01 00:00:00
%Y", localtime($START_SECONDS) );<br>
$END_TIME = strftime("%a %b 01
00:00:00 %Y", localtime($END_SECONDS) );<br>
<br>
$START_SECONDS = parsedate $START_TIME;<br>
$END_SECONDS = parsedate $END_TIME;<br>
<br>
for( $i = $START_SECONDS; $i < $END_SECONDS; $i += 86400 ) {<br>
$totals_by_day{$i} = 0;<br>
}<br>
<br>
$code = <<__EOD__;<br>
#<br>
# Include images that were backed-up in our time window.<br>
#<br>
(<br>
( \$record->{backup_time} >= $START_SECONDS )
&&<br>
( \$record->{backup_time} <= $END_SECONDS )<br>
)<br>
__EOD__<br>
<br>
$code .= "&& " . join(" && ",
@search_pattern ) if @search_pattern;<br>
<br>
%images = bpimagelist($code);<br>
<br>
foreach $image_id ( keys(%images) ) {<br>
<br>
$image = $images{ $image_id };<br>
<br>
$total += $image->{kilobytes};<br>
<br>
$dayslot = ( $image->{backup_time} - ($image->{backup_time}
% 86400) );<br>
$totals_by_day{$dayslot} += $image->{kilobytes};<br>
<br>
}<br>
<br>
print
"-------------------------------------------------------------------------------\n";<br>
print
"
Backup Totals Report\n";<br>
print
"-------------------------------------------------------------------------------\n";<br>
print
"
Start of Report : $START_TIME\n";<br>
print
"
End of Report : $END_TIME\n";<br>
print
"-------------------------------------------------------------------------------\n";<br>
print "\n";<br>
print "MONTHLY TOTAL BY DAY\n";<br>
print "\n";<br>
print "Client: $CLIENT\n" if $CLIENT;<br>
print "Class: $CLASS\n" if $CLASS;<br>
print "\n";<br>
foreach $day (sort(keys(%totals_by_day))) {<br>
printf( " %s: %9.2f MB %6.2f GB\n",<br>
strftime("%a,
%b %d", localtime($day) ),<br>
$totals_by_day{$day} / 1000,<br>
$totals_by_day{$day} / 1000000,<br>
);<br>
}<br>
print "\n";<br>
printf("Monthly Total for %s: %9.2f MB %6.2f GB\n",<br>
strftime("%B %Y",
localtime($START_SECONDS) ),<br>
$total / 1000,<br>
$total / 1000000,<br>
);<br>
print "\n";<br>
print
"-------------------------------------------------------------------------------\n";<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 - 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==_--
|