ディスク使用量スクリプトが誤った出力を表示する

ディスク使用量スクリプトが誤った出力を表示する

ディスク使用量を確認し、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

関連情報