#!/usr/local/bin/perl # # Purpose: Brief media inventory of tape robots # require "/usr/local/libdata/perl-5.003/site_perl/Mail/Send.pm"; use lib '/usr/local/libdata/perl-5.003/site_perl'; use Mail::Mailer; sub send_message { my ($recipient, $subject, @message) = @_; my $msg = new Mail::Send; $msg->to($recipient); $msg->subject($subject); my $fh = $msg->open; print $fh @message; $fh->close; } # Set variables $nbbin="/usr/openv/netbackup/bin/admincmd"; $vmbin="/usr/openv/volmgr/bin"; chop($host=`hostname | cut -d"." -f1`); $recipient = "fwellers\@uu.net"; $subject = sprintf "$host media report"; # Print report heading $heading = sprintf "=============================================================================\n INVENTORY OF MEDIA MANAGED BY $host\n=============================================================================\n"; @message = (@message, $heading); @stu_list=`$nbbin/bpstulist`; foreach $unit (@stu_list) { # Determine total tapes in robot and number of scratch tapes next if $unit =~ /^ATL_{1}[a-z0-9]*_{1}[a-z0-9]*|^D/; ($robname,$medtype,$server,$robtype,$robnum,$rest)=split(/ /,$unit,6); chop($num_tapes=`$vmbin/vmquery -bx -rn $robnum | wc -l`); chop($num_empty=`$vmbin/vmquery -bx -rn $robnum | grep scratch | wc -l`); $line = sprintf "\n$server has $num_tapes total tapes\n$server has $num_empty scratch tapes"; @message = (@message, $line); # Determine number of full tapes in robot open(AVAIL_MEDIA,"/usr/openv/netbackup/reports/avail_media"); $num_full=0; while () { next if !/^[A-Z,0-9]{6}/; @fields=split; if ($fields [2] eq "TLD" && $fields[8] eq "FULL" && $fields[3] == $robnum) { $num_full=$num_full+1; } } close(AVAIL_MEDIA); $line = sprintf "\n$server has $num_full full tapes\n"; @message = (@message, $line); } # Mail media inventory report to administrators send_message($recipient, $subject, @message); exit;