pbj0812의 코딩 일기

[자동화] crontab + mutt + python 으로 mysql 자료 메일 보내기 본문

빅데이터/자동화

[자동화] crontab + mutt + python 으로 mysql 자료 메일 보내기

pbj0812 2020. 2. 10. 00:07

0. flow chart

 - python(pymysql, pandas) 을 통한 mysql 자료 파일화(.txt)

 - mutt를 통한 결과 파일 메일 전송

 - crontab을 사용한 작업 자동화

1. 자료 준비

 1) mutt 설치(in Mac)

brew install mutt

 2) DB 준비

  - 링크

2. 자료 추출을 위한 python 파일 생성(db2csv.py)

 1) library 호출

import pymysql
import pandas as pd

 2) DB 연결 함수 제작

def db_connector():
    db = pymysql.connect(host='127.0.0.1', port=3306, user='***', passwd='***', db='pbj_db', charset='utf8')
    cursor = db.cursor()
    sql = '''SELECT * FROM pbj_db.Score;'''
    cursor.execute(sql)
    result = cursor.fetchall()
    db.close()
    return result

 3) 데이터 프레임 / 파일화(result.txt)

result = db_connector()
result = pd.DataFrame(result, columns = ['pk', 'id', 'money'])
result.to_csv("/Users/pbj0812/Desktop/test_code/mail/result.txt")

3. 작업 스크립트 생성

 1) 메일 본문용 파일 제작(body.txt)

  - body.txt 안에 메일 본문 입력

 2) 스크립트 생성(auto.sh)

  - which python3, which mutt를 입력하여 mutt와 python3의 위치 확인

  - 첫 번째 라인 : mysql 자료 추출 및 파일화

  - 두 번째 라인 : mutt를 사용하여 메일 전송

/anaconda3/bin/python3 /Users/pbj0812/Desktop/test_code/mail/db2csv.py

/usr/local/bin/mutt -s "auto_test" 메일주소@gmail.com < /Users/pbj0812/Desktop/test_code/mail/body.txt -a /Users/pbj0812/Desktop/test_code/mail/result.txt

4. crontab 작업 설정

 - 터미널에서 crontab -e

 - 1분마다 3.의 작업이 돌도록 설정 및 저장

 - crontab 참고

* * * * * sh /Users/pbj0812/Desktop/test_code/mail/auto.sh

5. 결과

 - 스팸함 확인

6. 참고

 1) crontab

 2) mutt

Comments