[Linux] Mail 발송 스크립트

김봉남·2024년 1월 22일

Linux

목록 보기
17/36
post-thumbnail

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일 이전 사용자 계정을 등록된 계정으로 메일 발송
profile
남자다

0개의 댓글