홈 서버를 사용했었는데
그 서버의 상태를 지속적으로 알고 싶어서 직접 만든 스크립트이다.
위와 같이 로그가 메일로 전송된다.
그리고 위와 같이 내용이 첨부된다.
해보자
스크립트를 실행하기 전에 해야할 작업이다.
[메일서버 설치]
# DNS MX 를 mail.cybertramp.net 를 호스트 IP로 설정 (도메인이 없으면 상대 메일서버에서 확인이 안되서 메일이 안보내짐)
yum install postfix -y
[방화벽 설정]
firewall-cmd --permanent --add-port=smtp
firewall-cmd --reload
[서비스 설정]
systemctl enable postfix.service
systemctl start postfix.service
[메일서버 설정]
vim /etc/postfix/main.cf
# 호스트명 설정
myhostname = mail
# 도메인명 설정
mydomain = cybertramp.net
# 메일발송시 FROM 부분 설정
myorigin = $mydomain
# 메일을 수신할 네트워크 지정
# localhost로 지정하면.. 외부에서 보내는 메일을 받지 못함.
net_interfaces = all
# 메일서버가 최종 수신처가 되는 메일수신 도메인 설정
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 신뢰하는 네트워크 지정 - 서버가 한대이므로.. 자신만 믿도록 하자
mynetworks_style = host
# 릴레이할 도메인 지정 - 위에서 설정한 수신도메인으로 지정
relay_domains = $mydestination
[메일 전송 테스트]
mail -s "Subject : TEST MESSAGE" cybertramp@nate.com
[메일 전송 스크립트]
이건 자신이 원하는 파일명으로 저장 하면 된다. crontab으로 예약만 해두면 자동 실행 될것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Send server log # Written by Cybertramp echo -e "===============================================================" echo -e "# HOME SERVER REPORT Written by cybertramp@nate.com #" echo -e "===============================================================" echo -n "1. 오늘 날짜 : " && date echo -n " 업타임 : " && uptime && echo -e echo -e "2. 디스크 용량" && df -P && echo -e echo -e "3. 메모리 용량" && free && echo -e echo -e "4. 접속자 기록" && lastlog | grep -v "한번도" && echo -e echo -e "5 . 마운트 상태" && mount | grep -e md127 -e mapper && echo -e echo -e "6. 네트워크 상태" && ip a | grep -A 3 enp3s0 && echo -e echo -e "7. 포트 상태" && ss -tulpn && echo -e echo -e "8. 서비스 상태" echo -e "[메일 데몬]" systemctl status postfix.service |grep "Active:" echo -e "[SMB 데몬]" systemctl status smb.service |grep "Active:" echo -e "[SSH 데몬]" systemctl status sshd.service |grep "Active:" echo -e "===============================================================" | cs |
[crontab]
# crontab 확인
crontab -l
# crontab 수정
crontab -e # 편집기가 활성화 되며, 기록하면됨
# 공백으로 구분하며 순서는
# 분 시간 일 월 요일 명령
# ex ) 0 */6 * * * [[/root/script/sendmail.sh]]
# 아까 저장해둔 스크립트 예약 실행 설정
0 */6 * * * "sendmail.sh | mail -s cybertramp@nate.com"
아마 내가 해본 것중에 제일 깔끔히 성공한 작업이였을 것이다.
회사에서 공부하면서 재미있게 했었다. 굉장히 만족스러웠고..