본문 바로가기
Project/Blog New Post Noti

[New Post Noti] 자동트윗 봇을 실시간으로 사용하기

by Haren 2021. 9. 15.

드디어 New Post Noti 프로젝트의 마지막 포스팅이다. 엄밀히 마지막이라고 할 수는 없는게 혹시라도 나중에 기능을 추가한다거나 코드를 개선한다던가 하면 꼭 이번이 마지막 포스팅이라고는 할 수 없겠지만...

 

지난 포스팅에서는 New Post Noti의 자동트윗을 구현하고 작동하는 것까지 확인해보았다.

 

>_ 지난 포스팅 보기

 

[New Post Noti] 새 포스팅 알림 트윗하기

이 프로젝트 포스팅을 하면서 티스토리 플러그인에서 트위터로 내보내기 기능을 지원하는걸 알아버렸다... 하지만 뭔가 내 손으로 만들었다는게 중요하니까 회의감은 느끼지 않으려고 한다. 내

heibondk.tistory.com

 

이번 포스팅에서는 완성된 New Post Noti를 ssh 서버 위에서 crontab을 사용해서 실시간 사용이 가능하게 만드는 것에 대해서 다뤄보겠다.

 


Crontab?

소프트웨어 유틸리티 cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다.
소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해
cron을 사용한다.
출처 : 위키백과

위키백과의 설명을 보면 위와 같다. 마치 Windows에서 볼 수 있는 작업 스케쥴러와 같은 기능을 한다고 보면 될 것 같다.

 

ssh 서버에 New Post Noti 올리기

나는 같은 팀의 팀원이 자신의 NAS에 ssh 서버를 구축해서 포트를 파주었기 때문에 그 ssh 서버에서 작동을 시킬 것이다.

터미널에서 ssh 서버에 접속을 해준다.

 

$ git clone https://github.com/HarenKei/NewPostNoti

git clone 명령어를 사용해서 내 리포지토리에 있는 NewPostNoti를 클론해주었다.

 

하지만 지난 포스팅에서 말했듯, 액세스 키와 컨슈머 키에 관련된 정보는 .gitignore로 원격 저장소를 따라가지 않도록 해주었기 때문에, 내 로컬 저장소에서 ssh 서버로 해당 파일을 복사해주는 과정이 필요했다. 이 작업은 scp 명령어를 통해 수행할 수 있다.

 

자세한 사용은 추후에 따로 crontab과 scp 명령어에 대한 포스팅을 따로 해두고 싶다. 일단은 여기서 내가 사용한 명령어만 정리해보도록 하겠다.

 

$ scp -P (포트번호) -r (로컬 디렉토리)  (서버IP or 도메인):(서버 내 디렉토리)

scp 명령어의 옵션 중 2개가 사용되었다.

-P : 기본포트 (22번)이 아닐때 포트번호를 지정해주기 위해 사용함.

-r : 개별 파일이 아닌 디렉토리를 복사해주기 위해 사용함

 

공부했던 자료들에서는 포트번호를 지정하는 동시에 디렉토리 자체를 복사해주는 방법을 알 수가 없어서 이리저리 입력해보다 알게 되었다. 포트를 먼저 지정해주어야 한다.

 

Crontab 사용하기

$ crontab -e

위 명령어로 크론탭을 편집해보자. vi 에디터로 크론탭을 작성할 수 있다.

 

* * * * * echo "Hello" >> /home/haren/test.log
* * * * * cd /home/haren/HarenProject/NewPostNoti; ./run.sh

프로젝트가 있는 디렉토리만 주고 .py 파일을 바로 실행시킬 수 있었는데, 왜인지 되지 않았다.

DEF:CON 팀원의 도움을 받아서 Echo 쉘을 작성해서 실행시켜주는 방향으로 했다.

매 분마다 스크립트를 실행하도록 하여서 거의 실시간에 가까운 서비를 제공할 수 있도록 하였다.

 

이제 블로그에 글을 작성하면 1분 뒤에 내 트위터에 새 글이 올라왔다는 트윗이 올라온다.

 


이렇게 New Post Noti 프로젝트의 모든 작업이 완료되었다.

사용하다가 수정해야할 사안이 생기면 수정을 하고, 블로그에 포스팅을 남길 수 있도록 해보겠다.

아직까지는 문제가 없어보이는데... 완벽한 프로그램은 없기 마련이니까...