드디어 New Post Noti 프로젝트의 마지막 포스팅이다. 엄밀히 마지막이라고 할 수는 없는게 혹시라도 나중에 기능을 추가한다거나 코드를 개선한다던가 하면 꼭 이번이 마지막 포스팅이라고는 할 수 없겠지만...
지난 포스팅에서는 New Post Noti의 자동트윗을 구현하고 작동하는 것까지 확인해보았다.
>_ 지난 포스팅 보기
이번 포스팅에서는 완성된 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 프로젝트의 모든 작업이 완료되었다.
사용하다가 수정해야할 사안이 생기면 수정을 하고, 블로그에 포스팅을 남길 수 있도록 해보겠다.
아직까지는 문제가 없어보이는데... 완벽한 프로그램은 없기 마련이니까...
'Project > Blog New Post Noti' 카테고리의 다른 글
[New Post Noti] 새 포스팅 알림 트윗하기 (0) | 2021.09.08 |
---|---|
[New Post Noti] 블로그를 파싱해보자. (0) | 2021.09.04 |
[New Post Noti] Python으로 트윗을 작성하기 (2) | 2021.09.03 |
[New Post Noti] 파이썬 트위터 패키지 Tweepy (0) | 2021.09.03 |
[New Post Noti] 트위터 API를 사용해보자 (2) - 트위터 API 발급받기 (2) | 2021.09.01 |