定期的にメールでハードディスク状況を通知する
したいこと
- Macで一週間に一度ハードディスクの使用状況をメールする。
環境
- Mac OS X Server(Snow leopard)
やること
- ハードディスクの状況をメールするシェルスクリプト設定
- launchdDemonsにplist設定
launchdとは
cronのmac版的なもの。定期的に色々実行してくれる
Undocumented Mac OS X:第1回 initを置き換えるlaunchd【前編】 (1/3) - ITmedia エンタープライズ
今回内部環境の都合上、各ハードディスクの総容量が取得できないのでそこはガチ記述にした。
どちらもutf-8で書いた。
CheckCapacity.sh
円マークになっちゃってるとこはバックスラッシュでございます。
#!/bin/bash ###snowin #data,system 総容量を設定 DMAX=280.70 SMAX=150.74 #data,system 配列作成 DATA=(`df -g -t hfs | sed -n '/\/Volumes\/data/p' `) SYSTEM=(`df -g -t hfs | sed -n '/\/Volumes\/system/p' `) #容量のパーセント計算 DATAP=`echo "scale=2;100 * ${DATA[2]} / $DMAX" | bc` SYSTEMP=`echo "scale=2;100 * ${SYSTEM[2]} / $SMAX" | bc` strDATA=${DATA[5]}" | 容量 : "$DMAX"G | 使用領域 : "${DATA[2]}"G | 使用% : "$DATAP"%" strSYSTEM=${SYSTEM[5]}" | 容量 : "$SMAX"G | 使用領域 : "${SYSTEM[2]}"G | 使用% : "$SYSTEMP"%" ALERT="-------------------" #容量90%以上を判定 if test `echo "$DATAP > 90" | bc` -eq 1; then ALERT+=`echo "dataの空き容量が少なくなっています。"` fi if test `echo "$SYSTEMP > 90" | bc` -eq 1; then ALERT+=`echo "systemの空き容量が少なくなっています。"` fi #送信先 address="自分のメールアドレス@hogehoge.com" #メール主題 #`date`は現在の日時を表示 subject="容量-`date '+%Y/%m/%d'`" #メール送信 #echo -e $strDATA$strSYSTEM$ALERT | mail -s "$subject" $address mail -s "$subject" $address << mailbody $strDATA $strSYSTEM $ALERT mailbody exit 0
net.snowin.CheckCapacity.plist
lingonで記述
launchdでスクリプトを自動実行 » \(>ヮ<)/
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>AbandonProcessGroup</key> <true/> <key>Label</key> <string>net.snowin.CheckCapacity</string> <key>ProgramArguments</key> <array> <string>/Library/LaunchDaemons/CheckCapacity.sh</string> </array> <key>StandardErrorPath</key> <string>/dev/null</string> <key>StandardOutPath</key> <string>/dev/null</string> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>10</integer> <key>Minute</key> <integer>0</integer> <key>Weekday</key> <integer>1</integer> </dict> </dict> </plist>
月曜日の朝10時にメールが来るように設定。
Hourだけの設定だと指定時間1分ごとにメールが来て大変なことになった。
これを記述しないとメール送れないっぽい
tkoki blog: Mac OS Xでの定期的な処理 - launchdについて
の記事に助けられた。
ファイル設置
net.snowin.CheckCapacity.plistとCheckCapacity.shを
/Library/LaunchDaemons/
に移動
terminalで
>sudo chmod +x /Library/LaunchDaemons/CheckCapacity.sh >sudo launchctl load /Library/LaunchDaemons/net.snowin.CheckCapacity.plist
これで指定した時刻にメールが来る