だいたい505日前に更新最終更新日時: 2009-04-22 (水) 22:35:33 505日前
現在の位置
FrontPage > ディスクの使用量を監視(diskcheck.pl)
#!/usr/bin/perl ## ----------------------------- ## ## diskcheck ver 0.1 ## Total Internet Solution. ALINK Corporation. ## ----------------------------- ## ## --------- config ------------ ## ## アラートを送信するディスク使用量(パーセント・最大100) my $defaultCutoff = 50; ## デフォルトは50% # sendmail path my $sendmail = "/usr/sbin/sendmail"; ## 除外するデバイス(複数指定可) my @exclude = ( "/dev/fd*", ); ## 除外するファイルシステム my $ignore = "-x nfs"; ## 送信するメールアドレス(複数指定可) my $mailTo = ( 'example@example.com', ); ## サーバ名(指定無しの場合、hostnameから参照する) my $defaultHostname = 'www01.example.com'; ## -------- /config ------------ ## my $df_cmd = sprintf("df -hP -x none -x tmpfs -x iso9660 %s", $ignore); my $result = `$df_cmd`; my $result_org = $result; chomp($result); $result =~ s/\r//gi; $result =~ s/ / /gi while ($result =~ / /); my $mail_send_flag = 0; my @alert_target_volume = (); foreach ( split(/\n/,$result) ) { my ($volume, $total, $used, $avail, $pct, $mountpt) = split(/ /); my $exclude_flag = 0; map { if($volume =~/$_/) { $exclude_flag = 1 } } @exclude; $pct =~ s/(?:\%| )//gi; if( $pct !~ /^([0-9]+)$/ || $exclude_flag) { next } my $nPct = sprintf("%d",$pct); if ($defaultCutoff <= $nPct) { $mail_send_flag = 1; push(@alert_target_volume,sprintf("%s ( %s ) is %d %% full -- %s of %s used, %s remain",$volume,$mountpt,$nPct,$used,$total,$avail)); } } if($mail_send_flag) { my $hostname = ($defaultHostname) ? $defaultHostname : `hostname`; chomp($hostname); my $message = sprintf("Disk Usage Limit Over.\n\nDefault Disk Usage Limit is %s %\n\nhostname %s\n\n%s\n\n----\n-- df result\n----\n%s\n", $defaultCutoff, $hostname, join("\n",@alert_target_volume), $result_org, ); my $mail = sprintf("From: diskcheck\@%s\n",$hostname); $mail .= sprintf("To: %s\n",join(',',$mailTo)); $mail .= sprintf("Subject: [ ALERT ] Disk Usage Alert. <%s>\n",$hostname); $mail .= "Content-Transfer-Encoding: 7bit\n"; $mail .= "Content-Type: text/plain;\n\n"; $mail .= $message; open(MAIL,"| $sendmail -t -i") || die 'sendmail error'; print MAIL $mail; close (MAIL); }
- 関連ページ
- FrontPage4日前
ツールボックス
メニュー
最新の20件
最新の20件
2010-09-05
2010-09-01
2010-07-31
2010-07-27
2010-07-26
2010-04-23
2010-04-07
2010-04-04
2010-04-03
2010-03-31
2010-03-20
2010-03-19
2010-03-02
2010-02-28

