별도의 줄에 출력이 필요함 - 쉘 스크립트

별도의 줄에 출력이 필요함 - 쉘 스크립트

디스크 공간이 90을 초과할 때 이메일을 기록하기 위해 이 스크립트를 작성했습니다. 출력을 별도의 줄로 얻을 수 있도록 도와주세요. 이것은 내 코드입니다.

#!/bin/bash

errortext=""

EMAILS="[email protected]"


for line in `df | awk '{print$6, $5, $4, $1} ' `
do

# get the percent and chop off the %
percent=`echo "$line" | awk -F - '{print$5}' | cut -d % -f 1`
partition=`echo "$line" | awk -F - '{print$1}' | cut -d % -f 1`

# Let's set the limit to 90% when alert should be sent
limit=90

if [[ $percent -ge $limit ]]; then
    errortext="$errortext $line"
fi
done

# send an email
if [ -n "$errortext" ]; then
echo "$errortext" | mail -s "NOTIFICATION: Some partitions on almost 
full"         $EMAILS
fi

답변1

출력을 변수에 저장하려고 하지 말고, 필요하지 않을 때 명령 출력을 반복하려고 하지 마십시오.

#!/bin/bash

mailto=( [email protected] [email protected] )
tmpfile=$( mktemp )

df | awk '0+$5 > 90' >"$tmpfile"

if [ -s "$tmpfile" ]; then
    mail -s 'NOTIFICATION: Some partitions on almost full' "${mailto[@]}" <"$tmpfile"
fi

rm -f "$tmpfile"

행의 백분율이 90%를 초과하는 경우 관련 출력 행을 df배열에 나열된 주소로 메일로 보냅니다. 다섯 번째 필드가 숫자로 해석되도록 강제 mailto합니다 . 파일이 비어 있지 않으면 파일에 대한 테스트가 성공합니다. 임시 파일을 만들고 해당 이름을 반환합니다.0+$5awk-smktemp

관련 정보