회사에 어떤분이 매일아침마다, breakfast 채널이란곳에 메뉴를 주기적으로 업로드해주신것을 보았다. 일단 두가지 생각이 들었다. 아침마다 같은 시간에 올라오는 것을 보니, 스케쥴링을 하고 있고, 슬랙채널에 메시지를 보내는것을 보니, 웹훅을 발사하는 것이 있을것 같았다.
처음에는 다음과 같이 생각했다. 맥북에 crontab으로 특정 시간마다 실행시킬 쉘 스크립트를 작성해놓는다. 그 쉘 스크립트에는 웹훅을 발사하는 로직이 담겨있을 것이다. 정말 단순하다.
다음코드는 webhook.sh 파일에 담겨져있는 쉘 스크립트이다.
curl -X POST -H "Content-Type: application/json" -d '{"text": "오늘도 고생하셨습니다. 🥳", "icon_emoji": ":ghost:"}' <https://hooks.slack.com/services/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>
다음은 웹훅을 발사하는 코드이다. 슬랙이랑 어떻게 연동하는지는 다음 글에서 참고 가능하다. 슬랙을 사용한, 웹훅을 보내보자! 그렇다면, cronjob은 어떻게 등록하냐라고 했을때, 터미널에 다음과 같이 치면 cronjob을 등록 할 . 수있는 에디터가 뜬다.
crontab -e
이제 여기다가 얼만큼 텀을 두고 실행할지에대한 주기와 해당 작업을 실행할 스크립트 혹은 파일의 주소를 작성해 주면된다.
* * * * * /Users/kyusik/Desktop/webhook.sh
이 주기에 대한 설명은 다음 블로그를 참고하면 좋을 것 같다. https://jdm.kr/blog/2
위의 코드를 작성하고, esc + :wq를 작성하면 저장이되고 cronjob이 실행된다.
1분마다 webhook.sh를 실행했기 때문에 진짜로 1분마다 슬랙 메시지가 오는 것을 확인할 수 있다.
그렇다면 이렇게 스케쥴링과 웹훅을 쏘는 것은 완료했다. 그러면 아침메뉴를 가져오는 로직이 어딘가에 담겨야하고, 이렇게 컴퓨터에서 실행을 시켰을때, 컴퓨터가 꺼지면 어떻게되는거지? 라는 생각이 든다. 화면잠김상태에서는 웹훅이 계속 오는것을 확인했다.
그래서 그 아침메뉴기능을 만든 개발자 분께 여쭤봤더니, 배치서버를 그냥 돌리고 그 서버를 클라우드 시스템에 올려놓았다고 하셨다. 그렇게 되면, 서버코드내에 스케쥴링하는 코드, 아침식사를 가져오는코드, 웹훅을 발사하는 코드가 담기게 될것이다. 그리고 그 서버는 클라우드시스템이 망하지 않는한 계속 켜있는 상태일거니깐 이상적으로 돌아가는 프로그램이 될것이다.
내가 생각한것은 요즘IT 같은 웹페이지를 크롤링해서 개발관련된 것들만 웹훅으로 쏴주는코드를 작성하면 어떨까 라는 생각이 들었다. 그러면 하루에 한번. node.js
기반의 프로그램만 실행시켜주면되고, 그렇게하면 node.js에서 크롤링하는 코드를 작성하고, 웹훅까지 발사할수 있을 것 같다.
gpt에서 cd /path/to/your/nodejs/project 로 내 노드.js 파일이 있는 곳으로 이동을 하고, /usr/bin/node your_script.js Node.js 인터프리터를 사용하여 your_script.js
파일을 실행합니다. **your_script.js
**는 실행하고자 하는 Node.js 프로그램 파일이다.