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