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}