LAPINPT

tmux rtorrent init.d script

May 3rd, 2014
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.43 KB | None | 0 0
  1. #!/bin/sh
  2. # chkconfig: 2345 85 15
  3. # description: Start autodl-irssi and rtorrent
  4. ### BEGIN INIT INFO
  5. # Provides:          irssi rtorrent init script
  6. # Required-Start:    $local_fs $network $syslog
  7. # Required-Stop:     $local_fs $syslog
  8. # Default-Start:     2 3 4 5
  9. # Default-Stop:      0 1 6
  10. # Short-Description: Start autodl-irssi and rtorrent
  11. # Description:       Start autodl-irssi and rtorrent
  12. ### END INIT INFO
  13.  
  14. # Exemples:
  15. # chmod +x /etc/init.d/tmux_rtorrent
  16. # update-rc.d tmux_rtorrent defaults
  17. # update-rc.d -f tmux_rtorrent remove
  18. # /etc/init.d/tmux_rtorrent start
  19. # sudo -H -u USER tmux -2 attach-session -t SESSIONNAME
  20. # sudo -H -u USER tmux send-keys -t SESSIONNAME:1 6 Down C-d
  21.  
  22.  
  23. USER=username
  24.  
  25.  
  26. SESSIONNAME=rt_$USER
  27. resetPath() {
  28.     PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
  29. }
  30. resetPath
  31.  
  32.  
  33. isStarted() {
  34.     sudo -H -u $USER tmux has-session -t $SESSIONNAME > /dev/null 2>&1 && return 0
  35.     return 1
  36. }
  37.  
  38. startIt() {
  39.     isStarted && return 0
  40.  
  41.     local START_IRSSI=n
  42.     local START_RTORRENT=n
  43.     which irssi > /dev/null 2>&1 && START_IRSSI=y
  44.     which rtorrent > /dev/null 2>&1 && START_RTORRENT=y
  45.  
  46.     case $START_IRSSI$START_RTORRENT in
  47.         yy)
  48.             sudo -H -u $USER tmux new-session -d -s $SESSIONNAME
  49.             sudo -H -u $USER tmux new-window -t $SESSIONNAME:1 -n rtorrent rtorrent
  50.             sudo -H -u $USER tmux new-window -t $SESSIONNAME:2 -n irssi irssi
  51.             sudo -H -u $USER tmux send-keys -t $SESSIONNAME:0 exit C-m
  52.             ;;
  53.         ny)
  54.             sudo -H -u $USER tmux new-session -d -s $SESSIONNAME
  55.             sudo -H -u $USER tmux new-window -t $SESSIONNAME:1 -n rtorrent rtorrent
  56.             sudo -H -u $USER tmux send-keys -t $SESSIONNAME:0 exit C-m
  57.             ;;
  58.         yn)
  59.             sudo -H -u $USER tmux new-session -d -s $SESSIONNAME
  60.             sudo -H -u $USER tmux new-window -t $SESSIONNAME:2 -n irssi irssi
  61.             sudo -H -u $USER tmux send-keys -t $SESSIONNAME:0 exit C-m
  62.             ;;
  63.  
  64.         nn)
  65.             ;;
  66.     esac
  67.     return 0
  68. }
  69.  
  70. stopIt() {
  71.     isStarted || return 0
  72.  
  73.     sudo -H -u $USER tmux send-keys -t $SESSIONNAME:1 C-q
  74.     sudo -H -u $USER tmux send-keys -t $SESSIONNAME:2 /quit C-m
  75.  
  76.     for i in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4; do
  77.         isStarted || break
  78.         sleep 1
  79.     done
  80.  
  81.     # If it's still not stopped, kill the whole tmux session
  82.     if isStarted; then
  83.         echo -n "Couldn't stop it. Killing tmux session..."
  84.         sudo -H -u $USER tmux send-keys -t $SESSIONNAME:1 C-q
  85.         sudo -H -u $USER tmux send-keys -t $SESSIONNAME:2 /quit C-m
  86.                 sudo -H -u $USER tmux send-keys -t $SESSIONNAME:0 exit C-m
  87.         sleep 2
  88.         sudo -H -u $USER tmux kill-session -t $SESSIONNAME
  89.         echo "Done."
  90.     fi
  91.  
  92.     return 0
  93. }
  94.  
  95. v_restartIt() {
  96.     v_stopIt
  97.     v_startIt
  98. }
  99.  
  100. v_showStatus() {
  101.     if isStarted; then
  102.         echo "$SESSIONNAME is running."
  103.     else
  104.         echo "$SESSIONNAME is stopped."
  105.     fi
  106. }
  107.  
  108. . /lib/lsb/init-functions
  109.  
  110. v_startIt() {
  111.     log_begin_msg "Starting $SESSIONNAME..."
  112.     startIt
  113.     log_end_msg $?
  114. }
  115.  
  116. v_stopIt() {
  117.     log_begin_msg "Stopping $SESSIONNAME..."
  118.     stopIt
  119.     log_end_msg $?
  120. }
  121.  
  122. resetPath   # Some include files may have reset it
  123. LOCKFILE=
  124. updateLock() {
  125.     [ -z "$LOCKFILE" ] && return
  126.     if isStarted; then
  127.         touch $LOCKFILE
  128.     else
  129.         rm -f $LOCKFILE
  130.     fi
  131. }
  132.  
  133. RETVAL=0
  134. case $1 in
  135.     start)
  136.         v_startIt
  137.         ;;
  138.     stop)
  139.         v_stopIt
  140.         ;;
  141.     force-reload|restart)
  142.         v_restartIt
  143.         ;;
  144.     try-restart)
  145.         isStarted && v_restartIt
  146.         ;;
  147.     status)
  148.         v_showStatus
  149.         ;;
  150.     *)
  151.         echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
  152.         RETVAL=1
  153.         ;;
  154. esac
  155.  
  156. updateLock
  157. exit $RETVAL
Advertisement
Add Comment
Please, Sign In to add comment