需求的功能:
1.检测空间
2.邮件通知
perl版:
1 #/usr/bin/perl
2 ##############################
3 #author skine0709@gmail.com
4 #date 2008-03-15 #
5 ##############################
6 use warnings;
7 use strict;
8 use MIME::Lite;
9 use Net::SMTP;
10
11 my $opt_R = q/^$/;
12 my $opt_r = "";
13 my $exclude_re = "(^//|^none)";
14 my $cmd="/bin/df -k";
15 my @output = `$cmd` ;
16 my $a;
17 #########setting#################
18 my $alert=90;
19 my @email=('****@***.com'); //发送到邮件地方
20 my $mailserver='smtp.***.com'; // smtp server
21 my $mailuser='********'; //邮件用户
22 my $mailpasswd='********'; //邮件密码
23 my $debug=0; //是否调试
24 ################################
25 #print "@output";
26 foreach my $a (@output) {
27 if ( $a =~ /([\d\w\/]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+([\/\w\d\.-] +)$/) {
28 # next if ($a = ~ m/$opt_R/);
29 # next if ($a !~ m/$opt_r/);
30 # next if ($a =~ m/$exclude_re/);
31 my ($dev,$s,$u,$f,$pu,$d) = ($1,$2,$3,$4,$5,$6);
32 if ($5 > $alert) {
33 my $driver=$6;
34 my $num=$5.'%';
35 disk_mail($driver,$num);
36 };
37 }
38
39 }
40
41 sub disk_mail
42 {
43 my $driver=shift;
44 my $num=shift;
45 my $time=localtime;
46 my $hostname=`hostname`;
47 foreach my $email (@email){
48 my $meg=MIME::Lite->new
49 (
50 Subject=>"disk alert",
51 From=>'skine0709@163.com',
52 To=>$email,
53 Type=>'text/html',
54 Data=>"$driver --- $num --- $time --- $hostname"
55 );
56 $meg->send('smtp',"$mailserver", Debug=>"$debug",
57 AuthUser=>"$mailuser", AuthPass=>"$mailpasswd");
58 }
59
60 }
随意写了一个,感觉爱蛮好用的。至少是满足我的需求了,参考了nagios插件中的check_disk.pl
当然,简单的也有一句话的shell
df|awk '{gsub(/%/,"")} NR>1 {if($5>90) print $5"%"}'
参考:一个简单的磁盘报警脚本
nagios中的check_disk.pl

没有评论:
发表评论