[MailReminder] 1 - 쉘로 on/off 기능 추가하기
MailReminder 프로젝트 개발기
목차
회고
- 리눅스 기본 crontab을 이용해서 특정 시간에 원하는 코드가 실행되도록 만들었으며 그 코드가 실행되면 내 구글계정을 이용해 원하는 메일에 메일을 보내도록 해놓았다.
목표
- 저번에는 도장에 가는 일정만 추가했는데 이번에는 사내 근골격 센터를 예약하는 작업을 추가해보려 한다.
- 매주 있는게 아니기 때문에 필요할 때 알림기능을 on/off를 하고 싶다.
- 도장 알림 같은 경우에는 매달 특정한 시간에 알림이 오도록하고 근골격 센터 예약은 알림을 등록하고 1달 후에 알림이 오게 하고 싶다.(결국, 이 부분을 crontab을 이용했기 때문에 하지 못했다…)
환경 및 구조
on/off의 기능
- on/off의 기능은
shell script
를 실행해서crontab
의 내용을 수정하도록 하려고 한다. - jupyter notebook을 통해서 원격으로 접속해서 쉘을 실행할 수 있기 때문에 쉘 스크립트의 실행을 통해 on/off 기능을 구현하려 한다.
- 간단하게 보면 파일이
on_smc_physiotherapy.sh
라는 파일이 있고 이걸 실행하면crontab
의 내용을 변경하는 방식이라 볼 수 있다.
방법 설명
- crontab에 근골격 센터의 일정 알림을 추가하는 방법은 아래와 같다.
- 시작할 때 PATH를 프로젝트 폴더로 잡아주고 일정이 이미 추가되어있는
smc_on_in_text
파일의 내용을 crontab에 입력으로 넣어주었다.
on_smc_physiotherapy.sh
#/bin/bash
cd /home/twpower/MailReminder
crontab smc_on_in_text
smc_on_in_text
...
# 환경 변수들 목록 쫘르륵
...
0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
코드 구현
- 메일을 보내는
reminder.py
는 저번과 같다. off_smc_physiotherapy.sh
,on_smc_physiotherapy.sh
,smc_off_in_text
,smc_on_in_text
이 추가되었다.
메인 구현 부분
off_smc_physiotherapy.sh
#/bin/bash
cd /home/twpower/MailReminder
crontab smc_off_in_text
on_smc_physiotherapy.sh
#/bin/bash
cd /home/twpower/MailReminder
crontab smc_on_in_text
smc_off_in_text
...
# 환경 변수들 목록 쫘르륵
...
0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
smc_on_in_text
...
# 환경 변수들 목록 쫘르륵
...
0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
반성
- 결국 생각해보니
crontab
은 일정 주기로 반복하는 작업을 도와주는 기능이어서 내가 등록하고 나서 1달 후 특정 요일에 알람이 오도록 하는건 힘든 일이었다… 나중에 프레임워크를 쓰거나 다른 라이브러리를 알아보는 방향으로 가야할거 같다. - 그래서 결국 매달 수요일에 하는거로 일단 구현을 하였다.
다음 목표
- 일단, 메일은 잘 오는걸 확인했는데 2가지 문제가 있었다..
- 첫째, 메일이 너무 많이 와서 알림 메일이 와도 메일 알림을 닫아버리면(안드로이드의 경우) 알림이 왔는지 알 수가 없다. 결국, 애초에 의도한 기능을 제대로 하지 못한다는것!
- 둘째, on/off하기가 너무 불편하다. UI가 있으면 좋겠다.
- 첫째와 둘째를 모두 구현하기란 쉽지 않기 때문에… crontab과 별개로 특정 시점부터 얼마가 지난후에 알림이 올 수 있도록 하는 부분을 찾아봐서 추가해야겠다.