Solaris에서 스크립트를 구현하고 모든 파일 시스템 사용량이 90%를 초과할 때 메일을 보냅니다. 스크립트에서 메일을 보내는 방법을 모르겠습니다.

Solaris에서 스크립트를 구현하고 모든 파일 시스템 사용량이 90%를 초과할 때 메일을 보냅니다. 스크립트에서 메일을 보내는 방법을 모르겠습니다.

Solaris의 스크립트, 모든 파일 시스템 사용량이 90%를 초과하고 메일을 보내는 경우 스크립트에서 메일을 보내는 방법을 모르겠습니다.

#!/bin/bash
# Outputs alert if filesystem is above 90%
{
        for fs in $(df -hk | awk '{print $6}' | sed '1 d'); do
                chk=$(df -hk ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}')
                if [ ${chk} -gt ${threshold} ]; then
                        echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%."
                fi
        done

"단항 연산자를 기대하는 것"이 ​​되고 있습니다.

답변1

if명령 에서 변수 주위에 큰따옴표를 추가해야 합니다. 그리고 다음 변수가 할당되었는지 확인하세요.

 if [ "${chk}" -gt "${threshold}" ]; then

메일을 보내려면 echo다음과 같은 명령을 사용할 수 있습니다.

echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%."|mail user@host

모든 요구 사항을 충족하는 하나의 이메일을 원하는 경우 다음을 사용할 수 있습니다.

>/tmp/output
for fs in $(df -hk | awk '{print $6}' | sed '1 d'); do
chk=$(df -hk ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}')
if [ "${chk}" -gt "${threshold}" ]; then
  echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%." >>/tmp/output
fi
done
cat /tmp/output|mailx -s "Subject" username@host

편집 1: 한 가지 더, 명령은 df -hk약간 무의미합니다. 결과가 사람이 읽을 수 있는 형식('h')과 킬로바이트('k')로 표시되기를 원합니다.

관련 정보