Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save taking/ec67c447d8e16522ff925bf094f24394 to your computer and use it in GitHub Desktop.
Save taking/ec67c447d8e16522ff925bf094f24394 to your computer and use it in GitHub Desktop.
#!/bin/sh
## taking.kr (webmaster@taking.kr)
## 2018-04-01
########## input ID, PASS #############
read -p "Transmission username: " uname
read -p "$uname's Password: " upasswd
########## input ID, PASS #############
encrypt_pass=$(perl -e 'print crypt($ARGV[0], "password")' $upasswd)
useradd -m -p $encrypt_pass $uname
mkdir -p /home/$uname/Downloads/
chown -R $uname.$uname /home/$uname/Downloads/
chmod g+w /home/$uname/Downloads/
########## firewall #############
firewall-cmd --permanent --zone=public --add-service=transmissiond
firewall-cmd --permanent --zone=public --add-service=flexget
firewall-cmd --reload
#cd /etc/csf/
#cp csf.conf csf.conf-dist
#sed -i 's/^TESTING =.*/TESTING = "0"/' csf.conf
#sed -i 's/^TCP_IN =.*/TCP_IN = "22,80,9091,10000,51413"/' csf.conf # transmission port 51413, rpc 9091
#sed -i 's/^TCP_OUT =.*/TCP_OUT = "1:65535"/' csf.conf
#sed -i 's/^UDP_IN =.*/UDP_IN = "51413"/' csf.conf
#sed -i 's/^UDP_OUT =.*/UDP_OUT = "1:65535"/' csf.conf
#csf -r
########## setup #############
yum update
yum install -y libevent transmission transmission-daemon
########## system autorestart #############
cd /etc/init.d
wget -O transmissiond https://gist.githubusercontent.com/taking/ec67c447d8e16522ff925bf094f24394/raw/08b68a4beed906f06b04461e0787b2431ca99cbb/transmission-daemon
sed -i "s%TRANSMISSION_HOME=/home/transmission%TRANSMISSION_HOME=/home/$uname%" transmissiond
sed -i 's%DAEMON_USER="transmission"%DAEMON_USER="$uname"%' transmissiond
chmod 755 /etc/init.d/transmissiond
chkconfig --add transmissiond
chkconfig --level 345 transmissiond on
########## transmission configuration #############
service transmissiond start
service transmissiond stop
sleep 3
cd /home/$uname/.config/transmission
sed -i 's/^.*rpc-whitelist-enabled.*/"rpc-whitelist-enabled": false,/' settings.json
sed -i 's/^.*rpc-authentication-required.*/"rpc-authentication-required": true,/' settings.json # 웹 접속 인증 요구
sed -i 's/^.*script-torrent-done-enabled.*/"script-torrent-done-enabled": true,/' settings.json # 토렌트 완료 시, sh 실행여부
sed -i 's/^.*script-torrent-done-filename.*/"script-torrent-done-filename": "SHPATH",/' settings.json # sh 경로설정
sed -i 's/^.*rpc-username.*/"rpc-username": "TID",/' settings.json # 접속 ID
sed -i 's/^.*rpc-password.*/"rpc-password": "TPASSWD",/' settings.json # 접속 PASSWD
sed -i "s/SHPATH/\/home\/TID\/.config\/transmission\/transmission-done.sh/g" settings.json # shell 실행 경로 설정
sed -i "s/TID/$uname/g" settings.json
sed -i "s/TPASSWD/$upasswd/g" settings.json
echo "settings.json 경로: /home/$uname/.config/transmission/settings.json"
echo "Daemon 명령어: service transmissiond start|stop|restart"
echo "변경 시 꼭! transmissiond 를 끄시고 수정하셔야 정상적으로 수정이 됩니다. 실행 중 변경은 적용되지 않습니다."
# transmission 전송 완료 시, 리스트 정리 쉘 스크립트
cat << 'EOT' > transmission-done.sh
#!/bin/sh
SERVER="9091 -n TID:TPASSWD"
TORRENTLIST=`transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | awk '{print $1}'`
for TORRENTID in $TORRENTLIST
do
DL_COMPLETED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Percent Done: 100%"`
STATE_STOPPED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"`
if [ "$DL_COMPLETED" ] && [ "$STATE_STOPPED" ]; then
echo "Torrent #$TORRENTID is completed."
echo "Removing torrent from list."
transmission-remote $SERVER --torrent $TORRENTID --remove
fi
done
# 해당 폴더의 시스템 시간 기준 +14일 시 파일 삭제
#find /4TB/AutoDownload/Ent/ -name '*' -mtime +13 -delete
EOT
sed -i "s/TID/$uname/g" transmission-done.sh
sed -i "s/TPASSWD/$upasswd/g" transmission-done.sh
chmod +x transmission-done.sh
service transmissiond start
ipaddr=$(hostname -I|cut -f1 -d ' ')
echo "http://$ipaddr:9091/transmission/web/"
########## flexget install ##############
yum -y groupinstall development
yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum install -y python36u python36u-libs python36u-devel python36u-pip
ln -s /bin/python3.6 /bin/python3 && ln -s /bin/pip3.6 /bin/pip
install -U pip
pip install -U setuptools
pip install flexget
mkdir /home/$uname/.flexget/
chown -R $uname.$uname /home/$uname/.flexget/
cd /home/$uname/.flexget/
cat <<EOT > config.yml
schedules:
# Download Tasks
- tasks: 'download_*'
interval:
# 1시간 마다 실행
hours: 1 # weeks, days, hours, minutes
tasks:
download_ent:
rss: '여기에 RSS 주소 입력'
verify_ssl_certificates: no
download: /4TB/AutoDownload/Torrent
content_filter:
require:
- '*.mp4'
regexp:
accept:
- '무한도전'
- '미운 우리 새끼'
- '백년손님'
- '아는 형님'
- '해피투게더'
- '라디오스타'
- '효리네 민박'
- '나 혼자 산다'
- '런닝맨'
- '윤식당'
- '너의 목소리가 보여'
- '이방인'
- '백종원의 골목식당'
- '발칙한 동거 빈방 있음'
- '나만 믿고 따라와 도시어부'
- '인생술집'
- '한끼줍쇼'
- '어서와 한국은 처음이지'
- '동상이몽2'
- '냉장고를 부탁해'
- '안녕하세요'
transmission:
host: localhost
username: TID
password: TPASSWD
EOT
sed -i "s/TID/$uname/" config.yml
sed -i "s/TPASSWD/$passw/" config.yml
# config syntax check
flexget -c /home/$uname/.flexget/config.yml check
cat <<EOT > /usr/lib/systemd/system/flexget.service
[Unit]
Description=Flexget Daemon
After=network.target
[Service]
Type=simple
User=TID
Group=TID
UMask=000
WorkingDirectory=/home/TID/.flexget
ExecStart=/usr/local/bin/flexget daemon start
ExecStop=/usr/local/bin/flexget daemon stop
ExecReload=/usr/local/bin/flexget daemon reload
[Install]
WantedBy=multi-user.target
EOT
sed -i "s/TID/$uname/g" /usr/lib/systemd/system/flexget.service
systemctl daemon-reload
systemctl enable flexget.service
systemctl start flexget.service
#!/bin/bash
#
# chkconfig: - 16 84
# description: Start up transmission-daemon
#
# processname: transmission-daemon
# config: /etc/sysconfig/transmission
# source function library
. /etc/rc.d/init.d/functions
# Get network config
. /etc/sysconfig/network
[ "${NETWORKING}" = "no" ] && exit 0
# Defaults
TRANSMISSION_HOME=/home/transmission
DAEMON_USER="transmission"
DAEMON_ARGS="-g $TRANSMISSION_HOME/.config/transmission"
# Daemon
NAME=transmission-daemon
DAEMON=$(which $NAME)
DAEMON_PIDFILE=/var/run/$NAME.pid
DAEMON_LOCKFILE=/var/lock/subsys/$NAME
DAEMON_SCRIPTNAME=/etc/init.d/$NAME
DAEMON_LOGFILE=/var/log/$NAME.log
[ -x "$DAEMON" ] || exit 0
start() {
echo -n $"Starting ${NAME}: "
if [ -n "$TRANSMISSION_HOME" ]; then
export TRANSMISSION_HOME
fi
su - $DAEMON_USER -c "$DAEMON $DAEMON_ARGS"
sleep 2
status $NAME &> /dev/null && echo_success || echo_failure
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
touch $DAEMON_LOCKFILE
pidof -o %PPID -x $NAME > $DAEMON_PIDFILE
fi
echo
}
stop() {
echo -n $"Shutting down ${NAME}: "
killproc $NAME
RETVAL=$?
[ $RETVAL -eq 0 ] && /bin/rm -f $DAEMON_LOCKFILE $DAEMON_PIDFILE
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $NAME
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
exit 3
;;
esac
@taking
Copy link
Author

taking commented Apr 1, 2018

개인적으로 사용하는 방화벽이 csf라 firewalld 는 테스트를 하지 못했습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment