Last active
June 14, 2019 17:05
-
-
Save taking/ec67c447d8e16522ff925bf094f24394 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
개인적으로 사용하는 방화벽이 csf라 firewalld 는 테스트를 하지 못했습니다.