Pomoc Team Speak Server - Nie działa po upgrade firmwa

slavko80

Passing Basics
Beginner
20 Grudzień 2015
25
2
3
44
QNAP
TS-x51
Ethernet
802.11a (Wi-Fi 2)
Zaktualizowałem QNAP'a (TS-251) do wersji firmware 4.3.3.0238

Niestety upgrade spowodował, że przestał działać Team Speak Sever (wersja TeamSpeak [x86] 3.0.7.1)

Po instalacji paczki w pliku TeamSpeak_info.txt z folderu Public wygenerowany jest błąd:

package_routines: line 44: ./ts3server_linux_x86: No such file or directory

Czy ktoś miał taki problem i jakoś go rozwiązał?

Wersja oprogramowania Firmware: 4.3.3 Build 0238
Model serwera: QNAP TS-251
 
lepiej sprawdz GDZIE program się zainstalował a potem go włacz :)

Program zainstalował się w /share/CACHEDEV1_DATA/.qpkg/TeamSpeak]

Próbuje uruchomić serwer poprzez:

sh teamSpeak.sh start

Skutkuje to komunikatem:

Starting TeamSpeak...
teamSpeak.sh: line 71: ./ts3server_linux_x86: No such file or directory
 
hmm - całe życie odpalam serwer TSa za pomocą ./ts3server_startscript.sh start

sprawdz czy masz binarkę tsa :

upload_2017-7-23_20-23-53.png
 
Kod:
#!/bin/sh

QPKG_NAME="TeamSpeak"
QPKG_DIR=""
CONF=/etc/config/qpkg.conf
PIDFILE="$QPKG_DIR/${QPKG_NAME}.pid"
PUBLIC_SHARE=`/sbin/getcfg Public path -f /etc/config/smb.conf`
LICENSEKEY_FILE="${PUBLIC_SHARE}/licensekey.dat"
SERVERKEY_FILE="${PUBLIC_SHARE}/serverkey.dat"

find_base()
{
        # Determine BASE installation location according to smb.conf
        publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf`
        if [ ! -z $publicdir ] && [ -d $publicdir ];then
                publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2`
                publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3`
                publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4`
                if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then
                        [ -d "/${publicdirp1}/${publicdirp2}/Public" ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}"
                fi
        fi

        # Determine BASE installation location by checking where the Public folder is.
        if [ -z $QPKG_BASE ]; then
                for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/HDE_DATA /share/HDF_DATA /share/HDG_DATA /share/HDH_DATA /share/MD0_DATA /share/MD1_DATA /share/MD2_DATA /share/MD3_DATA; do
                        [ -d $datadirtest/Public ] && QPKG_BASE="$datadirtest"
                done
        fi
        if [ -z $QPKG_BASE ] ; then
                echo "The Public share not found."
                exit 1
        fi
        QPKG_DIR="${QPKG_BASE}/.qpkg/${QPKG_NAME}"
}

find_base

case "$1" in
	start)
		ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
		if [ "$ENABLED" != "TRUE" ]; then
			echo "$QPKG_NAME is disabled."
			if [ "$2" != "force" ]; then
				exit 1
			else
				echo "Forcing startup..."
			fi
		fi

		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "$QPKG_NAME is already running with pid $PID!"
			exit 1
		fi


		# Check if licence can be found in public share
		if [[ -f $LICENSEKEY_FILE ]] ; then
			echo "Licence key found and copied to QPKG directory."
			/bin/mv $LICENSEKEY_FILE "${QPKG_DIR}/"
		fi
		if [[ -f $SERVERKEY_FILE ]] ; then
			echo "Server key found and copied to QPKG directory."
			/bin/mv $SERVERKEY_FILE "${QPKG_DIR}/"
		fi

                echo "Starting ${QPKG_NAME}... "
		export LD_LIBRARY_PATH="${QPKG_DIR}:${LD_LIBRARY_PATH}"
		cd $QPKG_DIR
		./ts3server_linux_x86 > /dev/null &
		if [[ $! -gt 0 ]]; then
			echo $! > $PIDFILE
			exit 0
		else
			exit 1
		fi
                ;;

	stop)
                echo "Stopping ${QPKG_NAME}... "
		if [[ -f $PIDFILE ]] ; then
			kill `/bin/cat $PIDFILE`
			/bin/sleep 10
		fi
		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "Still running, killing PID=$PID ... "
			kill -9 $PID
		fi
		rm -f $PIDFILE
		exit 0
                ;;

        restart)
                $0 stop
		/bin/sleep 5
                $0 start
		exit 0
                ;;
	status)
		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "$QPKG_NAME (pid $PID) is running."
		else
			echo "$QPKG_NAME is stopped."
		fi
		exit 0
		;;
	*)
                echo "Usage: $0 {start|stop|restart|status}"
                exit 1
esac
 
Zmieniłem. Bez zmian. Odpalenie skryptu:

sh teamSpeak.sh start

zwraca:

Kod:
Starting TeamSpeak...
teamSpeak.sh: line 73: ./ts3server_linux_x86: No such file or directory


Skrypt po modyfikacji wygląda tak:

Kod:
#!/bin/sh

QPKG_NAME="TeamSpeak"
QPKG_DIR=""
CONF=/etc/config/qpkg.conf
PIDFILE="$QPKG_DIR/${QPKG_NAME}.pid"
PUBLIC_SHARE=`/sbin/getcfg Public path -f /etc/config/smb.conf`
LICENSEKEY_FILE="${PUBLIC_SHARE}/licensekey.dat"
SERVERKEY_FILE="${PUBLIC_SHARE}/serverkey.dat"

find_base()
{
        # Determine BASE installation location according to smb.conf
        publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf`
        if [ ! -z $publicdir ] && [ -d $publicdir ];then
                publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2`
                publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3`
                publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4`
                if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then
                        [ -d "/${publicdirp1}/${publicdirp2}/Public" ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}"
                fi
        fi

        # Determine BASE installation location by checking where the Public folder is.
        if [ -z $QPKG_BASE ]; then
                for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/HDE_DATA /share/HDF_DATA /share/HDG_DATA /share/HDH_DATA /share/MD0_DATA /share/MD1_DATA /share/MD2_DATA /share/MD3_DATA; do
                        [ -d $datadirtest/Public ] && QPKG_BASE="$datadirtest"
                done
        fi
        if [ -z $QPKG_BASE ] ; then
                echo "The Public share not found."
                exit 1
        fi
        QPKG_DIR="/share/CACHEDEV1_DATA/.qpkg/TeamSpeak"
		
		
}

find_base

case "$1" in
	start)
		ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
		if [ "$ENABLED" != "TRUE" ]; then
			echo "$QPKG_NAME is disabled."
			if [ "$2" != "force" ]; then
				exit 1
			else
				echo "Forcing startup..."
			fi
		fi

		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "$QPKG_NAME is already running with pid $PID!"
			exit 1
		fi


		# Check if licence can be found in public share
		if [[ -f $LICENSEKEY_FILE ]] ; then
			echo "Licence key found and copied to QPKG directory."
			/bin/mv $LICENSEKEY_FILE "${QPKG_DIR}/"
		fi
		if [[ -f $SERVERKEY_FILE ]] ; then
			echo "Server key found and copied to QPKG directory."
			/bin/mv $SERVERKEY_FILE "${QPKG_DIR}/"
		fi

                echo "Starting ${QPKG_NAME}... "
		export LD_LIBRARY_PATH="${QPKG_DIR}:${LD_LIBRARY_PATH}"
		cd $QPKG_DIR
		./ts3server_linux_x86 > /dev/null &
		if [[ $! -gt 0 ]]; then
			echo $! > $PIDFILE
			exit 0
		else
			exit 1
		fi
                ;;

	stop)
                echo "Stopping ${QPKG_NAME}... "
		if [[ -f $PIDFILE ]] ; then
			kill `/bin/cat $PIDFILE`
			/bin/sleep 10
		fi
		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "Still running, killing PID=$PID ... "
			kill -9 $PID
		fi
		rm -f $PIDFILE
		exit 0
                ;;

        restart)
                $0 stop
		/bin/sleep 5
                $0 start
		exit 0
                ;;
	status)
		PID=`/bin/ps -eo 'pid,cmd'| grep 'ts3server_linux_' | grep -v grep | awk '{sub("^ ", "", $0); print $0}' | cut -d " " -f 1`
		if [[ -n "$PID" ]]; then
			echo "$QPKG_NAME (pid $PID) is running."
		else
			echo "$QPKG_NAME is stopped."
		fi
		exit 0
		;;
	*)
                echo "Usage: $0 {start|stop|restart|status}"
                exit 1
esac
[code]
 
faktycznie - zainstalowałem i nie działa.

Zrobiłem taki myk, że pobrałem paczkę serwera z od Teamspeaka - Downloads - TeamSpeak - w wersji 64bit
następnie rozpakowałem, całość tych plików przerzuciłem w lokację tam gdzie jest TS na QNAPie i wystartowałem za pomocą ./ts3server_startscript.sh start , program wypluje pierwsze tokeny i mozesz się logować a okno sesji SSH zamknąć. server działa w tle.

upload_2017-7-23_22-6-44.png
 
Zrobiłem tak jak Ty i podobnie jak u Ciebie Team Speak odpalił się generując tokeny. Co ważne, ta wersja jest aktualna (paczka QPKG jest z 2013 roku). Dzięki wielkie za pomoc!

Mam jeszcze jedno pytanie - do jakiego pliku dopisać uruchomienie tego skryptu (/share/CACHEDEV1_DATA/.qpkg/TeamSpeak/ts3server_startscript.sh start) żeby serwer startował automatycznie po restarcie serwera?
 
Autostart wykonałem troche inaczej.

W pliku \mnt\HDA_ROOT\.config\qpkg.conf miałem już ustawiony autostart zainstalowanej wcześniej wersji więc zmieniłem wiersz

Shell = /share/CACHEDEV1_DATA/.qpkg/TeamSpeak/teamSpeak.sh

na

Shell = /share/CACHEDEV1_DATA/.qpkg/TeamSpeak/ts3server_startscript.sh

i teraz po restarcie TS wstaje razem z pozostałymi usługami.
 
Dzien dobry
Probowalem zrobic to ta sama metoda
Niestety maszyna wypluwa "permission denied"
Co powinieniem zrobic?

Moj sprzet
ts 453 pro
fw 4.3.4.0483

update
na stronie ts sa dwie wersje jedna dla freebsd to wlasnie ta wersja wywala - permission denied
druga dla linux wywala: command not found
 

Mogą Cię zainteresować

Użytkownicy znaleźli tą stronę używając tych słów:

  1. teamspeak