#!/usr/bin/perl -w
use strict;
use DBI qw(:sql_types);
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 $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;
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();
$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"`);
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;
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";`}
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);
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 ( $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";
}
}
warn "Execution of stored procedure failed \n";
}
}