python sendmail.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Zabbix SMTP Alert mail
"""
import sys
import smtplib
import datetime
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
# Mail Account
MAIL_ACCOUNT = 'testVM01@gmail.com'
MAIL_PASSWORD = 'ABC'
# Sender Name
SENDER_NAME = u'testVM01@gmail.com'
# Mail Server
SMTP_SERVER = 'exmail.hhi.co.kr'
SMTP_PORT = 25
# TLS
SMTP_TLS = True
def send_mail(recipient, subject, body, encoding='utf-8'):
session = None
msg = MIMEText(body, 'plain', encoding)
msg['Subject'] = Header(subject, encoding)
msg['From'] = Header(SENDER_NAME, encoding)
msg['To'] = recipient
msg['Date'] = formatdate()
try:
session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
if SMTP_TLS:
session.ehlo()
# session.starttls()
session.ehlo()
session.login(MAIL_ACCOUNT, MAIL_PASSWORD)
session.sendmail(MAIL_ACCOUNT, recipient, msg.as_string())
except Exception as e:
raise e
finally:
# close session
if session:
session.quit()
if __name__ == '__main__':
"""
recipient = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[3]
"""
if len(sys.argv) == 4:
send_mail(
recipient=sys.argv[1],
subject=sys.argv[2],
body=sys.argv[3])
with open('/var/log/zabbix/mail-' + str(datetime.date.today()) + '.log', 'a') as inf:
inf.write(str(datetime.datetime.now()) + ': recipient=' + str(sys.argv[1]) + ', subject=' + str(sys.argv[2]) + ', SEND=OK' + '\n')
else:
print u"""requires 3 parameters (recipient, subject, body)
\t$ sendemail.py recipient subject body
"""
with open('/var/log/zabbix/mail-' + str(datetime.date.today()) + '.log', 'a') as inf:
inf.write(str(datetime.datetime.now()) + ': SEND=ERROR' + '\n')
check script(user_passwd_chk.mail.sh)
#!/bin/bash
DIR_1='/etc/zabbix'
SUB="`uname -n` User Password expire"
MAIL=("testVM01@gmail.com" "testVM02@gmail.com" "testVM03@gmail.com")
#for i in $(cat /etc/passwd |egrep -v 'nfsnobody|cloud-user' | awk -F: '{if($3>=1000) print $1}')
for i in $(ls /var/spool/hist)
do
#echo $i
expires=`chage -l $i |grep "Password expires" | awk -F: '{print $2}'`
expires_1=`chage -l $i |grep "Maximum number" | awk -F: '{print $2}'`
DATE_1=`date -d "$expires" '+%s'`
DATE_2=`date '+%s'`
A=`echo "($DATE_1 - $DATE_2) / 86400" | bc`
#echo $A
if [ $A -le 30 ]
then
for MAIL_1 in "${MAIL[@]}"
do
echo "$i 패스워드 만료일 : $A 남았습니다."
B_1="`uname -n` `hostname -I` ${i} user 패스워드_만료일 $A 남았습니다."
python ${DIR_1}/sendmail.py "${MAIL_1}" "${SUB}" "${B_1}"
#python ${DIR_1}/sendmail.py "testVM01@gmail.com" "User Password expire" "${B_1}"
done
fi
done
exit 0
- 30일 이전 사용자 계정을 등록된 계정으로 메일 발송