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