티스토리 블로그는 블로그 API를 통해서 글을 작성할 수 있었습니다. 블로그 APIMicrosoft Word 와 같은 외부 편집기 프로그램을 통해서 티스토리에 글을 게시하고 수정할 수 있는 API 입니다. 그런데 보안에 취약한 문제 등으로 2016 12월에 지원을 종료하였습니다. 대신에 오픈 API는 계속 사용할 수가 있습니다.

http://notice.tistory.com/2359

저는 아래 주소의 로또 관련 포스팅을 매주 자동으로 생성하고 있습니다. 로또 결과 발표가 나면 단순한 형태의 크롤링을 통해 로또 당첨번호를 가져오고~ 계속해서 안 나오고 있는 숫자들을 자동으로 찾습니다.

http://iamaman.tistory.com/category/%EB%A1%9C%EB%98%90

이후 포스팅할 로또 HTML 페이지를 생성 한 다음 티스토리 오픈 API를 통해서 로또 포스팅을 업로드 하고 있습니다.

http://www.tistory.com/guide/api/post

그런데 오픈 API 사용 실력이 딸리다 보니 텍스트 업로드는 알겠는데 파일 업로드는 잘 모르겠더군요. 매주 로또 파일이 업로드 되는데 글에 첨부되는 텍스트 파일 업로드를 자동으로 하는 방법을 잘 모르겠어서, 로또 파일 업로드는 수동으로 처리하고 있습니다. 

오픈 API를 확인해 보면 파일 첨부 API가 있습니다. 파일 첨부 API를 사용해서 텍스트 파일을 업로드를 여러 번 시도해 봤지만 정상적으로 동작하지 않았습니다. 그래서 이번에는 제가 가지고 있는 Synology NAS 에 터미널로 붙어서 CURL을 통해 티스토리 블로그에 파일첨부를 시도해봤습니다.

curl -F 'access_token=access_token값' \

     -F 'blogName=iamaman' \

     -F 'uploadedfile=@./lotto.txt' \

     https://www.tistory.com/apis/post/attach

텍스트 업로드를 시도하자 아래 그림과 같이 이미지만 업로드 할 수 있다고 에러 메시지가 뜨더군요. ~! 결과적으로 오픈 API의 파일 첨부 API를 사용해서는 텍스트 파일은 업로드 할 수 없다는걸 이제야…. 알게 됐습니다.


같은 방법으로 이미지파일을 업로드 해 보니 정상적으로 첨부가 되더군요.  정상적으로 동작하면 응답값 200을 받습니다.

그럼 텍스트 파일을 이미지 확장자로 만든 다음에 업로드 해 보면 어떻게 될까... 해서 해 봤는데... 역시나 안되더군요. 


이 글을 보시는 분들은 저처럼 Tistory Open API 를 통해 텍스트 파일 첨부하려고 뻘짓하지 마시기 바랍니다.


오늘은 Synology NAS 에서 스크립트를 실행하는 방법에 대해 소개하려 합니다. 


저는 Synology NAS 를 주로 파일 다운로드 용도로 사용하는데~ 


다운로드 한 파일들 중에서 패턴이 있는 것들은 스크립트를 주기적으로 실행해서 자동으로 분류 하도록 합니다.


윈도우의 예약 작업, 리눅스의 Cron 등과 같이 Synology NAS 에는 "작업 스케쥴러"가 있습니다.


다음과 같이 제어판에서 "작업 스케줄러"를 실행하시면 됩니다. 

다음으로 당연히 스크립트가 있어야 겠고~


제가 주기적으로 실행하는 스크립트 명은 modify_files.sh 입니다. 제 home 폴더에 들어 있고 해당 파일의 절대 경로를 알아야 합니다. 


Synology NAS 의 File Station 에서 해당 파일을 클릭한 후에 오른쪽 클릭 하고 속성을 보면 위치 라는 부분에도 나오고 


터미널을 사용하시는 분들은 다음과 같이 타이핑 하면 절대 경로가 나옵니다.

realpath 파일명

ex) realpath modify_files.sh

이렇게 절대 경로를 알았다면 이제 예약된 작업과 트리거된 작업이 있는데~ 

예약된 작업은 시간에 따라 주기적으로 실행하는 것을 의미하고 트리거된 작업은 Synology NAS 를 시작 할때 또는 종료 할때 실행 되도록 하는 것을 의미 합니다.


저는 modify_files.sh 를 주기적으로 실행할 것이므로 "예약된 작업" 으로 만듭니다. 그리고 사용자 정의 스크립트를 선택합니다. 


다음으로 작업생성의 일반 탭에서 작업의 이름을 설정합니다. 본인이 원하는 이름으로 설정하면 됩니다. 사용자는 제 경험상 그냥 root 로 설정하는게 좋을 것 같습니다. 


다음으로 스케줄 탭에서 실행 주기를 설정 합니다. 


다음으로 작업 설정 탭에서 사용자 정의 스크립트 부분에 아까 위에서 알아낸 스크립트의 절대 경로를 넣습니다. 


이제 다 됐습니다. 


확인을 누른 후에 활성화 됨에 체크가 되어 있다면 정상적으로 실행 될 겁니다. 


해당 스크립트의 실행을 하지 않고 싶다면 활성화 됨 체크를 해제 하시면 되고 


다신 안 쓰고 싶다면 해당 작업을 선택하신 후에 아래와 같이 작업 -> 삭제를 클릭하시면 됩니다. 

Synology NAS 는 서버 입니다. 서버를 사용한다면 당연히 자동화를 많이 하면 많이 할 수록 효율적으로 사용 할 수 있을 겁니다.



  1. 평강줌마 2018.01.10 16:51 신고

    저는 정말 컴퓨터를 인터넷과 한글, 엑셀 작업용으로만 사용하나 봐요.
    처음 알게 되었네요. 꾹 누르고 갑니다.
    즐거운 오후 시간 되세요.

    • 남성 2018.01.10 17:00 신고

      요즘 사진이나 동영상이나 파일들이 많아지다 보니까 나스 많이들 사용하더라구요. 저도 Synology NAS 하나 장만해서 사용해 보고 있습니다. 즐거운 하루 되시고 매번 방문해 주셔서 감사합니다~

  2. 이재영 2019.03.17 11:07

    안녕하세요. 좋은 팁 잘보고갑니다.
    혹시 modify_files.sh 는 어디서 다운이 가능할까요?

    • 남성 2019.03.17 12:08 신고

      본인의 환경에 맞게 작성하셔서 사용하셔야 합니다.

      아래와 같이 파일을 찾아서 옮기는 간단한 스크립트 파일입니다.

      #!/bin/sh
      find /var/services/video/* -maxdepth 1 -name '*초인*가족*' -type f -exec mv {} /var/services/video/drama/초인가족 \;

리눅스 데스크톱 사용시 요즘은 GUI 을 많이 사용하곤 하지만

 

그래도~ 리눅스는 터미널이죠~

 

보통의 경우 리눅스 터미널은 bash shell 을 사용하곤 하는데~ bash 에서 cd(change directory) 명령을 통해 디렉터리를 자주 왔다리 갔다리 하는데… 이게 참… 불편합니다.

 

그래서 좀 찾아보니 역시 어딘가에 답은 있더군요. 아래 글을 보니 commacd 라는 툴에 대해 소개 하더군요.

 

http://shyiko.com/2014/10/10/commacd/

 

말 그래도 ,( comma) 을 사용하여 directory 를 이동하는 건데~ 이게 써보니 무지하게 획기적이더군요.

 

commacd의 공식 사이트는 아래 주소와 같습니다.

 

https://github.com/shyiko/commacd

 

저는 지금 윈도우에서 사용 중이라 Cygwin 에서 진행을 해 봤습니다. 물론 리눅스에서도 똑같이 하면 됩니다.

 

위 페이지에서 Installation 부분을 보시면 아시겠지만 일단 curl 이 설치가 되어 있어야 합니다.

 

https://github.com/shyiko/commacd#installation

 

curl 이 설치되어 있는 분은 위 설명 대로 아래 명령어를 통해 설치하면 되고~

 

curl https://raw.githubusercontent.com/shyiko/commacd/master/commacd.bash -o ~/.commacd.bash && \

echo "source ~/.commacd.bash" >> ~/.bashrc

 

저처럼 아래와 같이 Cygwin에서 wget을 사용하여 설치 해도 됩니다. 주의할 점은 아래와 같이 –O 을 써야 한다는 겁니다.

 

wget https://raw.githubusercontent.com/shyiko/commacd/master/commacd.bash -O ~/.commacd.bash && \

echo "source ~/.commacd.bash" >> ~/.bashrc

 

 

vim ~/.bashrc 명령을 통해 .bashrc 파일을 확인 하면 아래 그림과 같이 source ~/.commacd.bash 라는 명령어가 추가 된 것을 확인 할 수 있습니다.

다음으로 bashrc 파일을 실행 합니다.

source ~/.bashrc

 

이제 commacd 을 사용하는 일만 남았군요.

 

Usage 을 보시면 간단한 사용 방법을 아실 텐데요~

 

https://github.com/shyiko/commacd#usage

 

주 사용방법은 , ,, ,,, 을 사용하는 겁니다.

 

, 는 하위 폴더로 가는 거고~ ,, 는 상위 폴더~ ,,, 는 상하위로 가는 명령어입니다.

 

, d 라는 명령어를 통해 현재 폴더 하위의 d 가 들어가 있는 폴더의 목록을 보여 주면 숫자로 선택 하면 됩니다.

 

, c 을 하면 c 로 시작하는 폴더가 나오고~ , p 라고 하면 p 로 시작하는 폴더가 나오죠~

 

그 하위로 갈 때도 일일이 path 을 다 치지 않고~ /usr/local/Cellar 폴더 가려면 , /u/l/ce 와 같이 일부만 쳐도 들어가더군요.

 

현재 저는 /cygdrive/c/Users/Administrator/Downloads 폴더에 있습니다. 현재 폴더의 상위 폴더인 /cygdrive/c 로 가기 위해서는

 

,, c 라고만 하면 상위에서 c 가 들어있는 최 하위 폴더로 가게 됩니다.

 

다음으로 ,,, 명령을 실행 해 볼 건데요. ,,, 명령을 통해 최상위 폴더 아래의 임의의 폴더로 접근 할 수 있습니다.

 

현재 저는 다음과 같이 /cygdrive/c/Program Files/AhnLab 폴더에 잇습니다.

 

그런데 /cygdrive/c/Windows 폴더에 접근 하고 싶다고 해보죠~

 

그럼 아래 그림과 같이 간단하게 ,,, c/win 라고만 타이핑 하면 해당 패턴을 가진 폴더가 나오고~ 아래 그림과 같이 0을 선택하여 해당 폴더로 이동 할 수 있습니다.

 

commacd 아~ 너무 편하고 좋네요. cd 의 혁명인 것 같습니다. 앞으로는 commacd 없으면 못 살 거 같네요.


+ Recent posts