행복둥이들의 이야기

[Synology] Download Station에 Telegram 알람 적용하기 본문

컴퓨터 이야기/NAS 이야기

[Synology] Download Station에 Telegram 알람 적용하기

행복둥이들 2019. 5. 18. 20:48

시놀로지 다운로드 스테이션에서 다운로드 후 텔레그램을 이용하여 메시지를 보내고 완료된 목록을 다운로드 스테이션에서 지우는 방법을 설명한다.

참고 : Hakurei's Development Blog(https://hakurei.tistory.com/281)

 

[DownloadStation] 다운로드 완료 후 Telegram 알림 및 자동 제거하기

일단 DSM 버전은 6.1.4를 사용하고 있고, Linux에 대해서 기본적인 건 안다는 가정하에 설명하고, 본인의 포스팅을 따라하다가 발생하는 문제는 본인이 책임지지 않음.. (댓글 문의는 받아요) 아래는 실패 과정이..

hakurei.tistory.com

우선, Download Station 을 패키지 센터에서 종료(중지)한다.

시놀로지 NAS에 ssh 접속하여 Root 권한 획득 후, Download Station 이 재기동 시 설정파일을 초기화하지 않도록 변경하기 위해 /var/packages/DownloadStation/scripts/start-stop-status 파일을 편집한다.

$ sudo su	                                               ; Root 권한 획득

# vi /var/packages/DownloadStation/scripts/start-stop-status   ; vi 를 이용하여 start-stop-status 스크립트 파일을 편집

중간에 rm ${PACKAGE_DIR}/etc/download/settings.json 이라고 적혀있는 부분을 찾아, 다음과 같이 앞에 #을 붙여 주석처리 후 저장.

start()
{
    # create @download folder and service link
    CreateDownloadTmpDir
    
    rm ${PACKAGE_DIR}/etc/download/settings.json
    rm ${PACKAGE_DIR}/etc/amule/statitics.dat
start()
{
    # create @download folder and service link
    CreateDownloadTmpDir
    
#   rm ${PACKAGE_DIR}/etc/download/settings.json
    rm ${PACKAGE_DIR}/etc/amule/statitics.dat

앞서 주석 처리해줬던 settings.json 파일을 편집. ${PACKAGE_DIR} 의 경로는 앞서 편집했던 start-stop-status 스크립트 파일에 정의되어 있다. 내 경우에는 /var/packages/DownloadStation/etc/download/settings.json

# vi /var/packages/DownloadStation/etc/download/settings.json

script-torrent-done-enabled, script-torrent-done-filename 부분을 찾아 다음과 같이 변경한다.

"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/volume1/@appstore/DownloadStation/bin/downloadComplete.sh",

postgresql 의 계정정책 관련 설정을 변경한다.

# vi /etc/postgresql/pg_hba.conf

다음과 같이 되어있는 내용을

# TYPE  DATABASE        USER            ADDRESS                 METHOD 
local   all             postgres                                peer map=pg_root 
local   all             all                                     peer 

이렇게 변경한다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD 
local   all             postgres                                trust 
local   all             all                                     peer 

그리고, postgresql 을 재시작

# /usr/syno/etc.defaults/rc.sysv/pgsql.sh restart

이제 앞서 settings.json 파일에서 script-torrent-done-filename 에서 지정해 준 쉘 스크립트 파일을 만들어준다.

# vi /volume1/@appstore/DownloadStation/bin/downloadComplete.sh

이 때 텔레그램으로 메시지를 보내기 위해 텔레그램 봇의 Token 과 Chat_Id 를 알아야 하는데,

[컴퓨터 이야기/etc.] - [Telegram] Bot Token 및 Chat Id 얻기를 참고하여 미리 알아둔다.

#!/bin/sh

TOKEN='텔레그램봇의 Token'
URL='https://api.telegram.org/bot'$TOKEN
MSG_URL=$URL'/sendMessage?chat_id='
CHAT_ID='Chat Id'

function send_message {
    res=$(/usr/bin/curl --data-urlencode "text=[NAS 이름] $TR_TORRENT_NAME download complete." "$MSG_URL"$CHAT_ID"&")
}

send_message
/bin/psql -U postgres -d download -c "DELETE FROM Download_queue WHERE status IN ('5','7','8')"

쉘 스크립트 파일에 실행 권한을 주고,

# chmod 755 /volume1/@appstore/DownloadStation/bin/downloadComplete.sh

패키지 센터에서 Download Station 을 재시작 해준다.

이제 Download Station 에서 다운로드가 다되면 텔레그램을 통해 "[NAS 이름] 토렌트명 download complete." 라고 메시지가 전송된 후 Download Station 에서 다운로드 목록이 지워지게 된다.

Comments