2011/05/13

ディスク容量のチェックツール

随分と時間が開いてしまったが、友人の awk (1) の勉強支援の第 4 段。 ディスクの容量をチェックして警告メイルを送信するためのスクリプト。

df (1) の内容を簡単に解析して、 ルートパーティションの使用率が指定した値以上の場合は警告メイルを送信し logger (1) を利用して syslog にも警告を出力する。

  1#!/bin/sh
  2#
  3#   All rights reserved, copyright (c) 2011, Mitzyuki IMAIZUMI
  4#   $Id: rdf,v 1.1 2011/05/13 17:38:09 mitz Exp $
  5#
  6
  7myname=${0##*/}
  8tmpfile=${TMP:-/tmp}/${myname}.$$
  9logger=/usr/bin/logger
 10df="LANG=C df -h"
 11
 12# 警告メイルの宛先
 13to=root@example.com
 14
 15# 警告処理
 16warning()
 17{
 18
 19    LANG=C
 20    subject="##### [ ${1}: Disk Usage ] #####"
 21    ${logger} "${subject}"
 22    cat << EOF | mail ${to} -s "${subject}"
 23
 24${1}
 25
 26`date`
 27
 28`cat ${2}`
 29EOF
 30
 31}
 32
 33# 終了時に一時ファイルを削除
 34trap 'rm -r ${tmpfile}; exit' 0 1 2 3 9 13 15
 35
 36# メイン処理
 37
 38# tee(1) を使って df(1) の出力を awk(1) と一時ファイルの両方に出力
 39${df} | tee ${tmpfile} |
 40    awk '{
 41        # 最後のフィールドが '/' の場合 (ルートパーティション)
 42        if($NF == "/")
 43            # 最後の直前のフィールドが使用率なので閾値との比較結果をリターン
 44            exit($(NF-1) < '${1:-70}')
 45    }' && warning `hostname` ${tmpfile}
    


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.