카테고리 보관물: 소규모 잡짓거리

가끔은 꼼지락거립니다.

Arch Linux에서 Transmission을 Telegram으로 제어하기

최근 텔레그램 봇을 이것저것 뜯어보니, 생각보다 매우 간편하게 봇을 만들고 명령하고 답변 받을 수 있어서 어디 쓸까 생각하던 차에, 트랜스미션을 텔레그램으로 제어하는 프로그램을 발견했다.

https://github.com/pyed/transmission-telegram

사실 난 안드로이드만 쓰고 트랜스미션 어플이 안드로이드에는 있어서 이 방식이 별로 필요 없지만, 아이폰이나 아이패드 같은 경우는 트랜스미션 앱도 없고 파일을 왓치 폴더에 올리는 식으로 밖에 할 수 없어서 이 방식이 매우 유용할 것으로 본다.

먼저 transmission-telegram을 다운로드 한다.

https://github.com/pyed/transmission-telegram/releases

나는 포고플러그 E02를 쓰고 있으니 transmission-telegram_Linux_arm.tar.gz을 받았다. 각자 OS와 CPU에 맞게 받으면 된다.

이제 텔레그램에서 내가 쓸 봇을 생성해보자. 봇아빠(@BotFather)를 찾아가자. 앞으로 BotFather을 봇아빠라고 한다.
봇아빠한테서 봇 하나 생성한다.

/newbot

채팅창에서 보일 이름을 정한다. 바로 구분할 수 있는 게 좋으니 난 그냥 Transmission으로 했다.

Transmission

다음은 이 봇의 고유 이름을 붙인다. 다른 봇들과 이름이 중복이 안 되고, 마지막은 bot으로 끝나야 한다. TransmissionBot이나 transmission_bot 뭐 이런 식이면 된다. 중복되는 게 없을 때까지 물어보니 맘에 드는 걸로 한다. 여기서는 예로 TransmissionBot.

TansmissionBot

이러면 이제 봇아빠는 생성한 봇의 토큰 값을 알려준다.

012345678:ABCDEFGHIJKLMNOPQRSTUVWXYZ

이런 형식의 토큰 값이다. 누구에게도 알려주지 말고 잘 간직하자. 노출이 됐으면 봇을 그냥 지우고 새로 만들면 된다.

이제 만든 봇한테 가서 말 한번 걸어보자. 봇아빠가 마지막에 준 메시지에서 클릭해서 들어가도 되고, @TransmissionBot와 같이 찾아서 들어가도 된다.
시작을 누르거나 /start를 주고 아무 말이나 한번 걸어준다.

이제 이러면 내가 쓸 텔레그램 봇은 마련이 됐고, 이제 처음에 받은 transmission-telegram을 설치한다.

/usr/local/bin

나는 여기다 설치했지만 그냥

export $PATH

해서 나오는 $PATH 중에 맘에 드는 걸로 하거나 새로 하나 만들고 $PATH에 추가해도 된다.
소유자도 원하는 걸로 바꿔놓든가 하고 실행 권한도 준다.

cd /usr/local/bin
chown root:root transmission-telegram
chmod a+x transmission-telegram

이제 그냥 실행시키고 나와도 상관이 없으나, 재부팅 하거나 하면 또 실행시켜야 하니 systemctl에 등록을 한다.

nano /usr/lib/systemd/system/transmission-telegram.service

다음 아래와 같은 형식으로 채워 넣는다.

[Unit]
Description=Transmission-Telegram
After=transmission.service

[Service]
User=(트랜스미션을 실행하는 유저 혹은 그보다 상위 유저)
Type=simple
ExecStart=/usr/local/bin/transmission-telegram -token=(위에서의 토큰 값) -master=@(봇의 아이디가 아닌 봇을 제어할 내 자신의 아이디) -username=(Transmission 유저 이름) -password=(Transmission 비밀번호)

[Install]
WantedBy=multi-user.target

트랜스미션에 로그인을 해야 해서 트랜스미션 서비스가 실행된 뒤에 실행이 되고, 이 서비스로부터 피드백은 받지 않게 했다. 조금씩 고칠 부분이 있으면 고치면 된다.
또한 systemctl status transmission-telegram으로 볼 때마다 저기서 쓴 비밀번호가 그냥 노출이 되니 혼자 쓰는 NAS면 누가 들어와서 보지 않는 이상 보진 않겠지만 찝찝하면 노출이 돼도 상관이 없는 것으로 바꾸자.

이제 transmission-telegram을 등록하고 실행해보자.

systemctl enable transmission-telegram
systemctl start transmission-telegram

다음 만들어둔 봇에게 가서 /help 한번 쳐보자. 응답이 온다면 성공.
나머지 명령어는 /help를 읽읍시다.

Arch Linux에서 Transmission 실행 설정

맨날 새로 깔 때마다 마치 처음 보는 것처럼 “아 뭘 했었지?” 하는 것도 지쳐서 나중에는 한방에 좀 하라고 기록해놓는다.

일단 systemctl로 실행되는 트랜스미션은 transmission 계정으로 실행이 되기는 하는데, 이렇게 실행하면 혼자 쓰는 NAS에서 폴더 관리하기가 참 귀찮다.
그래서 그냥 실행되는 서비스의 계정을 바꿔놓는다.

nano /usr/lib/systemd/system/transmission.service

여기서 보면

User=transmission

이렇게 있는 부분을

User=sweru

로 내가 주로 쓰는 계정으로 바꿔놓는다.

systemctl enable transmission
systemctl start transmission

이러면 재부팅 할 때마다 일일이 계정으로 로그인해서 데몬을 실행시킬 필요가 없어진다.