Linux Tips
[CentOS] smartd에서 mail, mailx 사용해 메일 보내기 - 2
kyeongjun-dev
2021. 7. 22. 13:29
smartmontools 설치
# yum -y install smartmontools
smartctl 명령어로 disk가 인식되는지 확인
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/sdd -d scsi # /dev/sdd, SCSI device
/dev/sde -d scsi # /dev/sde, SCSI device
/dev/sdf -d scsi # /dev/sdf, SCSI device
/dev/sdg -d scsi # /dev/sdg, SCSI device
/dev/sdh -d scsi # /dev/sdh, SCSI device
/dev/sdi -d scsi # /dev/sdi, SCSI device
/dev/sdj -d scsi # /dev/sdj, SCSI device
/dev/sdk -d scsi # /dev/sdk, SCSI device
여기부터가 중요
smartmontool을 daemon으로 시작하면, /etc/smartmontools/smartd.conf
설정 파일을 기반으로 실행된다.
- smartd.conf 파일 내용 (하단의 주석처리된 부분을 살펴보면 다양한 옵션 예제를 확인할 수 있다.)
DEVICESCAN -H -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q
저 줄만 주석처리가 안되어 있는걸 확인할 수 있다. 대충 해석해보면
1. DEVICESCAN
을 지정하면 전체 디스크를 모니터링 한다. ( /dev/sda
식으로 특정 디스크 지정 가능)
2. -H
옵션으로 디스크의 Health 체크를 한다.
3. -m
옵션은 mail을 보낼 계정(?)을 지정한다.
4. -M
옵션은 다양한 옵션이 있는데, 뒤에 exec 가 오면 해당 파일을 실행한다는 것이다.
- smartnotify 파일 내용
# cat /usr/libexec/smartmontools/smartdnotify
#! /bin/sh
# Send mail
echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"
# Notify desktop user
MESSAGE="SMART Disk monitor:"
case "$SMARTD_FAILTYPE" in
"EmailTest"|"Health"|"Temperature"|"Usage")
;;
*)
# "CurrentPendingSector", // 10
# "OfflineUncorrectableSector", // 11
# "FailedReadSmartErrorLog", // 7
# "ErrorCount", // 4
# "FailedReadSmartData", // 6
# "FailedHealthCheck", // 5
# "FailedOpenDevice", // 9
# "SelfTest", // 3
# "FailedReadSmartSelfTestLog", // 8
exit 0
esac
# direct write to terminals, do not use 'wall', because we don't want its ugly header
for t in $(who | awk '{ print $2; }' | grep -e '^tty' -e '^pts/')
do
echo "$MESSAGE
$SMARTD_MESSAGE" >/dev/$t 2>/dev/null ||:
done
상단에 Send mail을 보면 이전 게시물에서 mail 보내는 명령과 비슷한걸 볼 수 있다. ( -v
옵션 차이)
[root@server vagrant]# echo "vagrant-mail content" | mail -v -s "vagrant-maile subject" kimkyeongjun273@gmail.com
- smartnotify 파일 수정
#! /bin/sh
# Send mail
echo "$SMARTD_MESSAGE" | mail -v -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"
- smartd.conf 파일 수정
DEVICESCAN -M test -m kimkyeongjun273@gmail.com -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q
앞에 -H
를 제거하고, -M test
를 추가해서 test를 진행한다. -m
옵션 뒤에는 root가 아닌 메일을 보낼 계정을 지정한다.
- smartd 재시작 or 시작
# systemctl restart smartd
- 메일 수신 확인
디스크가 11개라서 11개의 메일이 도착한걸 확인할 수 있다.