Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/bin/sh # ************* # Configuration REMOTE="/usr/bin/transmission-remote" USERNAME="username" PASSWORD="password" MAXDOWN="3" MAXACTIVE="5" CONFIG="/etc/transmission-daemon/settings.json" # ************* # Set-up variables CMD="$REMOTE --auth $USERNAME:$PASSWORD" LOGCMD="/usr/bin/logger -t transmission-queue " MAXRATIO=$(cat $CONFIG | grep \"ratio-limit\":) MAXRATIO=${MAXRATIO#*\"ratio-limit\": } MAXRATIO=${MAXRATIO%*, } # ************* # deal with downloads DOWNACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | wc -l)" if [ $MAXDOWN -lt $DOWNACTIVE ]; then DOWNTOSTOP="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | \ tail -n $(expr $DOWNACTIVE - $MAXDOWN) | awk '{ print $1; }')" for ID in $DOWNTOSTOP; do NAME="$($CMD --torrent $ID --info | grep Name:)" $LOGCMD "<<< $ID: ${NAME#*Name: }" $CMD --torrent $ID --stop >> /dev/null 2>&1 done else [ $(expr $MAXDOWN - $DOWNACTIVE) -gt 0 ] && ( DOWNINACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | wc -l)" [ $DOWNINACTIVE -gt 0 ] && ( DOWNTOSTART="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | \ head -n $(expr $MAXDOWN - $DOWNACTIVE) | awk '{ print $1; }')" for ID in $DOWNTOSTART; do NAME="$($CMD --torrent $ID --info | grep Name:)" $LOGCMD ">>> $ID: ${NAME#*Name: }" $CMD --torrent $ID --start >> /dev/null 2>&1 done ) ) fi # Then deal with total active ACTIVE="$($CMD -l | tail --lines=+2 | grep -v Sum | grep -v Stopped | wc -l)" if [ $MAXACTIVE -lt $ACTIVE ]; then TOSTOP="$($CMD -l | tail --lines=+2 | grep 100% | grep -v Stopped | \ tail -n $(expr $ACTIVE - $MAXACTIVE) | awk '{ print $1; }')" for ID in $TOSTOP; do NAME="$($CMD --torrent $ID --info | grep Name:)" $LOGCMD "<<< $ID: ${NAME#*Name: }" $CMD --torrent $ID --stop >> /dev/null 2>&1 done else [ $(expr $MAXACTIVE - $ACTIVE) -gt 0 ] && ( SEEDINACTIVE="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | \ awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | wc -l)" [ $SEEDINACTIVE -gt 0 ] && ( TOSTART="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | \ awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | \ head -n $(expr $MAXACTIVE - $ACTIVE) | awk '{ print $1; }')" for ID in $TOSTART; do NAME="$($CMD --torrent $ID --info | grep Name:)" $LOGCMD ">>> $ID: ${NAME#*Name: }" $CMD --torrent $ID --start >> /dev/null 2>&1 done ) ) fi
This paste will be private.
From the Design Piracy series on my blog: