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')로 표시되기를 원합니다.