功能:当Linux磁盘分区达到70%时,自动发送邮件报警,使用前提:在被监控服务器上开启sendmail即可。
#!/usr/bin/perl
$ip_addr=`/sbin/ifconfig eth0 | perl -lne 'print \$1 if/inet addr:(.*)Bcast/'`;
$ip_addr=~ s/^\s+|\s+$//g;
$admin_addr = 'youshengtao\@youxigu.com';
&check_dfusage;
exit();
sub check_dfusage {
@diskinfo=`df`;
$ip_addr=`/sbin/ifconfig eth0 | perl -lne 'print \$1 if/inet addr:(.*)Bcast/'`;
$ip_addr=~ s/^\s+|\s+$//g;
$admin_addr = 'youshengtao\@youxigu.com';
&check_dfusage;
exit();
sub check_dfusage {
@diskinfo=`df`;
$message_text = ' ';
foreach (@diskinfo) {
($dirname,$arg1,$arg2,$arg3,$arg4,$arg5,$arg6) = split (' ',$_,7);
($arg4num,$therest) = split ('%',$arg4,2);
if ($arg4num > "70") {
$message_text ="$ip_addr $arg5 Disk partition space usage over $arg4num%","\n";
}
}
if ($message_text ne ' ') {
&sendmessage;
}
}
foreach (@diskinfo) {
($dirname,$arg1,$arg2,$arg3,$arg4,$arg5,$arg6) = split (' ',$_,7);
($arg4num,$therest) = split ('%',$arg4,2);
if ($arg4num > "70") {
$message_text ="$ip_addr $arg5 Disk partition space usage over $arg4num%","\n";
}
}
if ($message_text ne ' ') {
&sendmessage;
}
}
sub sendmessage {
open(SF,"|mail -v -s '$ip_addr Disk Partition Warning' $admin_addr");
print SF "$message_text";
close(SF);
}
open(SF,"|mail -v -s '$ip_addr Disk Partition Warning' $admin_addr");
print SF "$message_text";
close(SF);
}
转载于:https://blog.51cto.com/chlotte/360256