디스크 사용량 스크립트가 잘못된 출력을 표시함

디스크 사용량 스크립트가 잘못된 출력을 표시함

디스크 사용량을 확인하고 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

관련 정보