In its broadest sense, learning can be defined as a process of progressive change from ignorance to knowledge, and from indifference to understanding....

Monitor Disk spcae Usage

上一篇 / 下一篇  2008-10-07 14:56:44

#!/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";
                  }
}
 

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-03  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 6793
  • 日志数: 928
  • 影音数: 2
  • 文件数: 2
  • 书签数: 3
  • 建立时间: 2008-02-17
  • 更新时间: 2008-12-02

RSS订阅

Open Toolbar