1. slack-api app 만들기
slack app을 생성하여 활용할 수 있는 bot을 생성한다.
1) slack api 내 apps 생성
slack api > your apps > Create New Apps 를 클릭하여 앱을 생성
- slack api url : https://api.slack.com/
2) slack api 정보 설정
기본정보 및 OAuth & Permissions 내 Scopes 정보를 설정
2. python 가상환경 만들기
가상환경을 통해 원하는 파이썬 모듈 및 버전을 세팅하여 활용한다.
프로젝트마다 다른 하나의 가상환경을 생성하여 작업 가능하다.
가상환경의 대표적인 모듈
- venv : python 3.3 버전 이후 부터 기본 모듈에 포함됨
- virtualenv : python 2 버전부터 사용해오던 라이브러리. python 3.6에서 폐지됨
- conda : anaconda python을 설치했을 시 사용 가능한 모듈
1) venv 생성
가상환경을 생성할 디렉토리로 이동하여, 아래 명령어를 통해 가상환경을 생성
# python3 -m venv ./(생성하고자 하는 가상환경이름)
python3 -m venv ./myenv
2) venv 활성화
아래 명령어를 통해 생성한 가상환경을 활성화
# source (가상환경 이름)/bin/activate
source myenv/bin/activate
3) venv 비활성화
아래 명령어를 통해 생성한 가상환경을 활성화
deactivate
3. python 코드로 slack에 메세지 전송하기
생성된 슬랙bot의 token값을 이용하여, 작성된 python코드를 slack 채널로 메세지를 전송한다.
1) venv 내 slack_sdk를 설치
2) venv 내 ssl 인증서 업데이트
python 코드 실행 시 SSL 에러가 발생하면 인증서를 업데이트 해줍니다.
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
3) python 실행
아래 python 코드를 작성하고 실행합니다.
- local.py 에 SLACK_TOKEN 이라는 변수를 세팅하여 슬랙토큰을 넣는다.
- 미리 설치한 slack_sdk를 이용하여 필요한 모듈을 import 합니다.
- 원하는 채널명, 원하는 텍스트를 작성합니다.
import sys
from local import SLACK_TOKEN
from datetime import datetime
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
try:
client = WebClient(token=SLACK_TOKEN)
client.chat_postMessage(
channel = "#team_security_bot_test",
text = datetime.strftime(datetime.now(),
'-------------------------------------- \n'+
'[%Y.%m 월간 업무 알림] \n'+
' - 보안교육 일정 예약하기\n'+
' - 보호구역 출입기록대장 검토하기\n'+
'--------------------------------------')
)
except SlackApiError as e:
assert e.response["error"]
print(f"Got an error: {e.response['error']}")
4. bash script 에서 명령 작성
windows에서 bat파일처럼 mac에서 bash script를 통해 명령어를 작성할 수 있다.
1) bash script 작성
첫째 줄에 #!/bin/bash를 입력하고 실행을 원하는 명령을 입력하여 저장
- python을 실행하기 위해 가상환경을 활성화하는 명령
- python 코드를 실행하기 위한 명령
- python 가상환경을 종료하기 위해 비활성화하는 명령
#!/bin/bash
source /Users/syan/py/myenv/bin/activate
python /Users/syan/py/myenv/test2.py
deactivate
2) 실행
작성한 스크립트 파일을 실행하면, slack으로 작성된 코드가 전달되는 것을 볼수 있다.
5. crontab 에서 스케줄링 작성
정해진 시간에 자동으로 원하는 명령이 실행될 수 있도록 스케줄링 작성한다.
1) 작성방법
- 각 별 위치에 따라 주기를 다르게 설정 가능
- 순서대로 분-시간-일-월-요일
- 괄호 안의 숫자 범위 내로 별 대신 입력 가능
- 1부터 월요일이고 6이 토요일. 0과 7은 일요일.
* * * * * 명령
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
2) 실행예시
매월 1일 9시 1분에 pytest2.sh 를 실행
#-------------#
# 월간 업무 알림 #
#-------------#
1 9 1 * * /Users/syan/py/pytest2.sh
6. mac 전원 깨우기
mac이 켜져있어야 crontab도 동작을 할 것이고, 명령도 실행이 될 것 이다.
- Mac에서 Apple 메뉴 > 시스템 환경설정을 선택한 다음, 에너지 절약을 클릭하십시오.
- 오른쪽 하단에 있는 ‘일정’을 클릭한 다음, 사용할 옵션을 선택하십시오.
- Mac 시동 또는 깨우기 시간 설정하기: ‘시동 또는 깨우기’ 체크상자를 선택하십시오. 팝업 메뉴에서 하루나 여러 날을 선택한 다음 시간을 입력하십시오.
- Mac 잠자기, 재시동 또는 종료 시간 설정하기: ‘잠자기, 재시동 또는 시스템 종료’ 체크상자를 선택하고 왼쪽의 팝업 메뉴에서 적절한 옵션을 선택하십시오. 오른쪽의 팝업 메뉴에서 하루 또는 여러 날을 선택한 다음 시간을 입력하십시오.
Top comments (0)