![Solaris에서 스크립트를 구현하고 모든 파일 시스템 사용량이 90%를 초과할 때 메일을 보냅니다. 스크립트에서 메일을 보내는 방법을 모르겠습니다.](https://linux55.com/image/148854/Solaris%EC%97%90%EC%84%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EA%B5%AC%ED%98%84%ED%95%98%EA%B3%A0%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%B4%2090%25%EB%A5%BC%20%EC%B4%88%EA%B3%BC%ED%95%A0%20%EB%95%8C%20%EB%A9%94%EC%9D%BC%EC%9D%84%20%EB%B3%B4%EB%83%85%EB%8B%88%EB%8B%A4.%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%A9%94%EC%9D%BC%EC%9D%84%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%84%20%EB%AA%A8%EB%A5%B4%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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')로 표시되기를 원합니다.