서버 로그 postfix 스크립트

2018. 1. 22. 02:40

cybertramp Linux


홈 서버를 사용했었는데

그 서버의 상태를 지속적으로 알고 싶어서 직접 만든 스크립트이다.



위와 같이 로그가 메일로 전송된다.



그리고 위와 같이 내용이 첨부된다.



해보자


스크립트를 실행하기 전에 해야할 작업이다.


[메일서버 설치]

# 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 -"==============================================================="
echo -"#  HOME SERVER REPORT Written by cybertramp@nate.com  #"
echo -"==============================================================="
 
echo -"1. 오늘 날짜 : " && date
echo -"   업타임 : " && uptime && echo -e
echo -"2. 디스크 용량" && df -&& echo -e
echo -"3. 메모리 용량" && free && echo -e
echo -"4. 접속자 기록" && lastlog | grep -"한번도" && echo -e
echo -"5 . 마운트 상태" && mount | grep -e md127 -e mapper && echo -e
echo -"6. 네트워크 상태" && ip a | grep -3 enp3s0 && echo -e
echo -"7. 포트 상태" && ss -tulpn && echo -e
echo -"8. 서비스 상태"
echo -"[메일 데몬]"
systemctl status postfix.service |grep "Active:"
echo -"[SMB 데몬]"
systemctl status smb.service |grep "Active:"
echo -"[SSH 데몬]"
systemctl status sshd.service |grep "Active:"
 
echo -"==============================================================="
 
cs


[crontab]

# crontab 확인

crontab -l


# crontab 수정

crontab -e # 편집기가 활성화 되며, 기록하면됨

# 공백으로 구분하며 순서는

# 분 시간 일 월 요일 명령

# ex ) 0 */6 * * * [[/root/script/sendmail.sh]]


# 아까 저장해둔 스크립트 예약 실행 설정

0 */6 * * * "sendmail.sh | mail -s cybertramp@nate.com"

아마 내가 해본 것중에 제일 깔끔히 성공한 작업이였을 것이다.

회사에서 공부하면서 재미있게 했었다. 굉장히 만족스러웠고..