#!/usr/bin/perl $MAILPROG="/usr/sbin/sendmail"; $RECIPIENT="hostmaster\@skywhale.net"; #my $mdstat="/proc/mdstat"; my $mdstat="./mdstat.foo"; open(STAT,$mdstat) || die "Cannot open $mdstat:- $!\n"; @lines=; $linecount=$#lines; $offset=2; while($linecount >=0 ){ @d=split(/ /,$lines[$offset]); $devinfo=$d[0]; if( $devinfo eq "unused"){ last; } $i=4; while($i <= $#d){ $devinfo=$devinfo."::".$d[$i]; $i++; } chomp $devinfo; @info=split(/ /,$lines[$offset+1]); $devinfo=$devinfo."::".$info[$#info]; $offset=$offset+3; $linecount=$linecount-2; push(@devices,$devinfo); } close(STAT); while($devinfo=pop(@devices)){ @devinfo=split(/::/,$devinfo); $status=$devinfo[$#devinfo]; $i=1; while($i <= $#devinfo-1){ $stat=substr($status,$i,1); if($stat eq "_"){ $message= "Array $devinfo[0] has failed device $devinfo[$i]\n"; &mailreport($message); } $i++; } } sub mailreport(){ local($m)=@_; unless(open(MAIL,"|$MAILPROG $RECIPIENT")){print "mailsystem is braindead: $!\n";exit;} print MAIL "From: Raid monitor\n"; $RECIPIENT=~ s/%40/@/g; print MAIL "To: $RECIPIENT\n"; print MAIL "Subject: $m \n\n"; close MAIL; }