[slackbot] slack api를 이용하여 python의 코드 개발하기

5936 단어

1. slack-api 앱 만들기



slack app을 생성하여 활용할 수 있는 bot을 생성한다.



1) slack api 내 앱 생성



slack api > your apps > Create New Apps 클릭하여 앱을 생성
  • slack api url : https://api.slack.com/

  • 2) slack api 정보 설정



    기본정보 및 OAuth & Permissions 내 범위 정보를 설정

    2. python 가상환경 만들기



    가상환경을 통해 원하는 파이썬 모듈 및 버전을 세팅하여 활용한다.
    프로젝트마다 다른 하나의 가상환경을 생성하여 작업 가능하다.




    가상환경의 전개 모듈
  • venv : python 3.3 이후의 기본 모듈에 포함됨
  • virtualenv : python 2 버전부터 사용할 수 있습니다. python 3.6에서 가까워짐
  • conda : anaconda python을 설치했을 때 사용할 수 있는 모듈

  • 1) 환경 생성



    가상환경을 생성할 수 있게 이동하여, 가상환경을 생성

    # 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] 인증서 확인 실패: 로컬 발급자 인증서(_ssl.c:1123)를 가져올 수 없습니다.

    3) 파이썬 실행



    아래 python 코드를 작성하고 실행합니다.
  • local.py에 SLACK_TOKEN이라는 용어를 사용하여 슬랙토큰을 활성화합니다.
  • 미리 설치한 slack_sdk를 이용하여 필요한 모듈을 가져옵니다.
  • 원하는 채널명, 원하는 텍스트를 작성합니다.

  • 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 스크립트에서 사용자 작성



    windows에서 bat파일처럼 mac에서 bash script를 통해 명령어를 작성할 수 있다.


    1) bash 스크립트 작성



    지속적으로 줄에 #!/bin/bash를 입력하고 실행을 원하는 명령을 입력하여 저장
  • python을 실행하기 위해 가상 환경을 활성화하는 명령
  • python 코드를 실행하기 위한 명령
  • python 가상환경을 종료하기 위해 인식하는 명령

  • #!/bin/bash
    source /Users/syan/py/myenv/bin/activate
    python /Users/syan/py/myenv/test2.py
    deactivate
    

    2) 실행



    전형적인 스크립트 파일을 실행하면, 슬랙으로 코드를 작성하는 것이 표현되는 것을 볼 수 있습니다.


    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 잠자기, 재시동 또는 종료 시간 설정하기: '잠자기, 재시동 또는 시스템 종료' 체크상자를 선택하고 왼쪽의 팝업 메뉴에서 적절한 옵션을 선택하십시오. 오른쪽의 팝업 메뉴에서 하루 또는 여러 날을 선택한 다음 시간을 입력하십시오.

  • 좋은 웹페이지 즐겨찾기