#!/usr/local/bin/perl open (IMAGES, "/usr/openv/netbackup/bin/admincmd/bpmedialist -summary |"); open (HTML, ">/usr/openv/netbackup/stats/frozen.html") || die "Can't open output!"; select(HTML); set_date(); match(); sort_tapes(); write_html(); close IMAGES; close HTML; ## ## Subroutines... ## ## sub set_date { my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); ($mday < 10) ? ($mday = 0 . $mday) : ($mday =+ $mday); (($mon + 1) < 10) ? ($mon = 0 . ($mon + 1)) : $mon++; my $stamp; $hour = 0 . $hour if ($hour < 10); if ($hour > 12) { $hour = $hour - 12; $stamp = 'PM'; } elsif ($hour eq '12') { $stamp = 'PM'; } else { $stamp = 'AM'; } $min = 0 . $min if ($min < 10); $sec = 0 . $sec if ($sec < 10); my ($date_today) = $mon . '/' . $mday . '/' . $year; my ($time) = $hour . ':' . $min . ':' . $sec . " $stamp"; $rdate_today = \$date_today; $rtime = \$time; } sub match { while () { if ($_ =~ /^(\s+)MVA/o) { $_ =~ s/(\s+)//o; chop; my ($tape_id, $expiration, $date, $time, $status) = split (/ /) create_entry($tape_id, $expiration, $date, $time, $status) if ($status eq "(FROZEN)"); } } } sub create_entry { my ($tape_id, $index, $date, $time, $status) = @_; my ($rlEntry) = [$tape_id, $index, $date, $time, $status]; push (@{$tape_index{$tape_id}}, $rlEntry); } sub sort_tapes { my %hold_sort; foreach $tape (sort keys %tape_index) { my ($rlEntry) = @{$tape_index{$tape}}; push (@{$hold_sort{$rlEntry->[1]}}, $rlEntry); } %tape_index = %hold_sort; } sub write_html { print "Netbackup Frozen Tape Report

HEVA-ATL Frozen Tape Report

Last updated: $$rdate_today
at $$rtime


\n";
if (@{$tape_index{expired}}) { print "\n"; foreach $tape (@{$tape_index{expired}}) { print "\n";
} } else { print "\n"; } if (@{$tape_index{expires}}) { print "\n"; foreach $tape (@{$tape_index{expires}}) { print "";
} } else { print ""; } print "
Media IDExpiration DateExpiration Time
Currently Frozen Tapes (remove)
$tape->[0]$tape->[2]$tape->[3]
No currently expired FROZEN tapes
The following are FROZEN but NOT yet expired
$tape->[0]$tape->[2]$tape->[3]\n
No other frozen tapes.
\n"; }