Monitor Disk spcae Usage

#!/usr/bin/perl -w
use strict;
use DBI qw(:sql_types);
$ENV{"ORACLE_HOME"} = "/opt/oracle/product/9ir2";
 
my $dbh = DBI->connect( 'dbi:Oracle:dmsdb',
                        'MGR',
                        'MGR',
                                                { RaiseError => 1, AutoCommit => 0 }
                      ) || die "Database connection not made: $DBI::errstr" ;
my $DateTime = `date +'%Y-%m-%d'`;
chomp($DateTime);
my $MAILLIST = "hailiang.xiong\@xxxx.com";
my $p = "-" x 49;
my $sth = $dbh->prepare(qq{SELECT IP,HOSTNAME FROM TAB_HOSTS WHERE STATUS = 'UP'});
$sth->execute();
open (MYFILE,">/home/smmon/bin/alertdisk.log");
print MYFILE ("$p\n|HostName              | Mount on   |  Use%     |\n$p");
while ( my ($Ip,$HostName) = $sth->fetchrow_array() ) {
  my @OsInfo = split(/\s+/,`ssh -l smmon $Ip "uname -sn"`);
  if ($OsInfo[0] =~ /Linux/) {
   my @DiskList = `ssh -l smmon $Ip df -k`;
   Filter_DiskInfo(  $OsInfo[1],$Ip, @DiskList );
  }
  elsif($OsInfo[0] =~ /HP-UX/) {
   my @DiskList = `ssh -l smmon $Ip bdf`;
   Filter_DiskInfo(  $OsInfo[1],$Ip, @DiskList );
  }  
}
close (MYFILE);
$sth->finish;
$dbh->disconnect();
my $LINE = `cat /home/smmon/bin/alertdisk.log |wc -l`;
if ($LINE > 2)
{`cat /home/smmon/bin/alertdisk.log | mailx -s "DiskSpace Usage Alert!---Report By $0 " "$MAILLIST";`}

sub Filter_DiskInfo
{
        my (  $Hostname ,$IP ,@DiskInfo ) = @_ ;
        my $time=`date +%Y%m%d%H%M%S|cut -c 10-10`;
        eval {
                foreach my $Diskrow (@DiskInfo)
                {
                        if ($Diskrow !~ /^Filesystem/ and $Diskrow !~ /^none/ and $Diskrow !~ /^tmpfs/ )
                        {
                                $Diskrow =~ s/%//;
                                my @LineSplit = split(/\s+/,$Diskrow);

                          if (length($LineSplit[0]) < 19)
                          {     
                                my $HosTNAME = substr($Hostname."                      ",0,22);
                                my $USED = substr($LineSplit[4]."             ",0,10);
                                my $MOUNTPOINT = substr($LineSplit[5]."               ",0,11);
                            if ( $time eq "7"  )
                            {
                             if ( $LineSplit[5] =~ /arch/ )
                                {
                                    print MYFILE ("\n|$HosTNAME| $MOUNTPOINT| $USED|\n$p");
                                }
                            }   
                            else  
                            {
                               if ($LineSplit[4] > 40 && $LineSplit[5] =~ /arch/ )
                               {
                                    print MYFILE ("\n|$HosTNAME| $MOUNTPOINT| $USED|\n$p");
                               }
                               elsif ($LineSplit[4] > 95 || ($LineSplit[4] > 90 and ($LineSplit[5] =~ /opt/ or $LineSplit[5] =~ /var/ )))
                               {
                                    print MYFILE ("\n|$HosTNAME| $MOUNTPOINT| $USED|\n$p");
                               }
                            }
                          }  
                        }
                }
             };
        if ( $@ ) {
                    warn "Execution of stored procedure failed \n";
                  }
}
 
请使用浏览器的分享功能分享到微信等