Check mount points with Perl script

Here is my script I wrote to possibly add to the cron job to check and mount… mount points.

#!/usr/bin/perl -w
#
# Name: chkMounts.pl
# written by trizsolo
# Usage: ./chkMounts.pl args args args
#you can check as many mount points as needed
#with arguments or use defaults
###################################

my $host=`hostname`; chomp($host);
my $logfile="$host" . ".log";
my $debug="";
my $date=`date`; chomp($date);
my $cmd="mount -a";
our @mount_list=@ARGV;
if(@mount_list==0){ #check for arguments
@mount_list=('/EDWNAS1','/EDWNAS2','/EDWNAS3',
'/SOURCECORP','/EMCETL1','/opt/EMCEDW');
}
push(@mount_list, '/boot'); #add to check always
#################################
## call "df" & analyze output ##
#################################
foreach my $mount(@mount_list){
$event_count{$mount}=0
}
open(DF, "df|") or die "Can NOT complete df command: $!";
$/="\n";
while(){
foreach my $mount(@mount_list){
if($_=~m/$mount/i){
$event_count{$mount}++;
}
}
}
close(DF);
open(LOG, ">>$logfile")
or die "Can NOT open $logfile!\n";
foreach $mount(@mount_list){
if($event_count{$mount}==0){
print LOG "Mount point $mount is NOT running!\n";
system("mount $mount")==0 or die "Can NOT run cmd: $!";
}else{
print LOG "Mount point $mount occured $event_count{$mount} times!\n";
}
}
close(LOG);
exit 0;
#EOF

Leave a Reply