You are not logged in.

#1 2011-03-20 16:07:00

cepe
Member
Registered: 2010-10-15
Posts: 8

Team Speak 3 Server - Runing at startup whithout root privilages

I have just installed Team Speak Server on my Arch Linux machine. I am wondering how to run Team Speak Server at startup without root privileges.

With Team Speak 3 Server there is provided this startup script:

#!/bin/sh
# Copyright (c) 2010 TeamSpeak Systems GmbH
# All rights reserved

COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here
BINARYPATH="$(dirname "${0}")"
cd "${BINARYPATH}"
LIBRARYPATH="$(pwd)"

if [ -e "ts3server_linux_x86" ]; then
    BINARYNAME="ts3server_linux_x86"
elif [ -e "ts3server_linux_amd64" ]; then
    BINARYNAME="ts3server_linux_amd64"
elif [ -e "ts3server_freebsd_x86" ]; then
    BINARYNAME="ts3server_freebsd_x86"
elif [ -e "ts3server_freebsd_amd64" ]; then
    BINARYNAME="ts3server_freebsd_amd64"
else
    echo "Could not locate binary file, aborting"
    exit 5
fi

case "$1" in
    start)
        if [ -e ts3server.pid ]; then
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "The server is already running, try restart or stop"
                exit 1
            else
                echo "ts3server.pid found, but no server running. Possibly your previously started server crashed"
                echo "Please view the logfile for details."
                rm ts3server.pid
            fi
        fi
        if [ "${UID}" = "0" ]; then
            echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
            c=1
            while [ "$c" -le 10 ]; do
                echo -n "!"
                sleep 1
                c=$((++c))
            done
            echo "!"
        fi
        echo "Starting the TeamSpeak 3 server"
        if [ -e "$BINARYNAME" ]; then
            if [ ! -x "$BINARYNAME" ]; then
                echo "${BINARYNAME} is not executable, trying to set it"
                chmod u+x "${BINARYNAME}"
            fi
            if [ -x "$BINARYNAME" ]; then
                export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"                    
                "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null & 
                echo $! > ts3server.pid
                echo "TeamSpeak 3 server started, for details please view the log file"
            else
                echo "${BINARNAME} is not exectuable, cannot start TeamSpeak 3 server"
            fi
        else
            echo "Could not find binary, aborting"
            exit 5
        fi
    ;;
    stop)
        if [ -e ts3server.pid ]; then
            echo -n "Stopping the TeamSpeak 3 server"
            if ( kill -TERM $(cat ts3server.pid) 2> /dev/null ); then
                c=1
                while [ "$c" -le 300 ]; do
                    if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                        echo -n "."
                        sleep 1
                    else
                        break
                    fi
                    c=$((++c)) 
                done
            fi
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Server is not shutting down cleanly - killing"
                kill -KILL $(cat ts3server.pid)
            else
                echo "done"
            fi
            rm ts3server.pid
        else
            echo "No server runing (ts3server.pid is missing)"
            exit 7
        fi
    ;;
    restart)
        $0 stop && $0 start || exit 1
    ;;
    status)
        if [ -e ts3server.pid ]; then
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Server is running"
            else
                echo "Server seems to have died"
            fi
        else
            echo "No server running (ts3server.pid is missing)"
        fi
    ;;
    *)
        echo "Usage: ${0} {start|stop|restart|status}"
        exit 2
esac
exit 0

Offline

#2 2011-03-20 17:40:09

cepe
Member
Registered: 2010-10-15
Posts: 8

Re: Team Speak 3 Server - Runing at startup whithout root privilages

Problem partially solved.

I have created ts3 user and wrote startup script wrapper:

TS3PATH="..." # here I put path to team speak startup script

case "$1" in
    start)
        su ts3 -c "$TS3PATH start"
    ;;

    stop)
        su ts3 -c "$TS3PATH stop"
    ;;

    restart)
        su ts3 -c "$TS3PATH restart"
    ;;

    status)
        su ts3 -c "$TS3PATH status"
    ;;

    *)
        su ts3 -c "$TS3PATH $1"
esac

I believe there is better solution for this problem.

Last edited by cepe (2011-03-30 23:57:39)

Offline

Board footer

Powered by FluxBB