ディスク使用量を確認し、85%を超えるすべてのパーティションに電子メール通知を送信する簡単なbashスクリプトを作成しました。出力が次のようになります。
"/dev/mapper/rootvg-rootは87%です。管理者に電子メールが送信されました。"
ただし、現在のスクリプトは各パーティションを印刷しますが、正しいパーティションと一致しない割合を使用しています。以下のコードと出力:
#!/bin/bash
admin="[email protected]"
threshold="85"
util=`df -h | tail -n +2 | awk '{print $5}' | sed 's/.$//'`
part=`df -h | tail -n +2 | head -$1 | awk '{print $1}'`
for i in $util;
do
if [ $i -ge $threshold ]; then
echo "$part is currently at ${i}%. An email has been sent to your administrator."
mail -s "Critical Alert: $part is currently at ${i}%. Clear space immeadiately!" $admin
fi
done
出力:
/dev/mapper/rootvg-root
devtmpfs
tmpfs
/dev/mapper/rootvg-var
/dev/mapper/rootvg-u01
/dev/mapper/rootvg-home
/dev/mapper/rootvg-apps
/dev/mapper/rootvg-tmp is currently at 92%. An email has been sent to your administrator.
/dev/mapper/rootvg-tmp は 92% に達せず、/dev/mapper/rootvg-root は 92% で、85% 未満の他のパーティションは表示しないでください。
答え1
#!/bin/bash
admin="[email protected]"
threshold="85"
df -l --output=source,pcent | while IFS=" %" read -r part i; do
if [ $i -ge $threshold ] 2>/dev/null; then
echo "$part is currently at ${i}%. An email has been sent to your administrator."
mail -s "Critical Alert: $part is currently at ${i}%. Clear space immeadiately!" $admin
fi
done