Hey,
Hopelijk kunnen de experts me een beetje helpen met dit linux probleempje.
Ik heb op mijn nas (synology ds1511+) teamspeak gezet.
Enige nadeel is als ik de nas een keer restart ,ik telkens weer moet inloggen met putty en handmatig teamspeak opzetten.
Ik had dit graag automatisch laten gebeuren.
Ik heb daarvoor al een script aangemaakt in volgende directory:
/usr/local/etc/rc.d/ daar staan ook andere opstartscripts die overigens wel werken.
het script heb ik als inhoud het volgende gegeven:
case "$1" in
start)
sh /root/ts3/ts3server_startscript.sh start
;;
stop)
sh /root/ts3/ts3server_startscript.sh stop
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
Nu werkt het om een of andere reden toch niet zoals het zou moeten, om niet te zeggen niet
Hopelijk kan iemand me hiermee helpen.
Alvast bedankt
automatisch programma laten starten linux
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
Ja dat had ik ook gedaan.
Als ik gewoon sh /root/ts3/ts3server_startscript.sh start ingeef krijg ik volgende melding:
BusyBox v1.16.1 (2011-06-29 11:52:19 CST) multi-call binary.
Usage: readlink FILE
Display the value of a symlink
Could not locate binary file, aborting
als ik in de folder ben waar zich het ts3server_startscript.sh script bevind en daar ts3server_startscript.sh start doe gaat het perfect en start de server.
Als ik gewoon sh /root/ts3/ts3server_startscript.sh start ingeef krijg ik volgende melding:
BusyBox v1.16.1 (2011-06-29 11:52:19 CST) multi-call binary.
Usage: readlink FILE
Display the value of a symlink
Could not locate binary file, aborting
als ik in de folder ben waar zich het ts3server_startscript.sh script bevind en daar ts3server_startscript.sh start doe gaat het perfect en start de server.
-
- Elite Poster
- Berichten: 2831
- Lid geworden op: 13 jul 2010, 13:21
- Uitgedeelde bedankjes: 608 keer
- Bedankt: 542 keer
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
Hier heb ik toch even wat meer info over nodig, wat moet ik doen in mijn geval?
heb even een echo $PATH gedaan:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
heb even een echo $PATH gedaan:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
-
- Elite Poster
- Berichten: 2831
- Lid geworden op: 13 jul 2010, 13:21
- Uitgedeelde bedankjes: 608 keer
- Bedankt: 542 keer
Vooreerst: mijn inziens is het geen goed idee om TeamSpeak in de directory van de root user te plaatsen ....
Nu staat dit blijkbaar geïnstalleerd in "/root/ts3". Dus voortgaande hierop zou "/root/ts3" aan het path toegevoegd dienen te worden in het script dat je geplaatst hebt in de directory "/etc/init.d".
Onderstaand vind je een voorbeeld van een init script (zij het wel voor vnstat).
De regel "PATH=/usr/sbin:/usr/bin:/sbin:/bin" zou in jouw geval dus worden: "PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/ts3".
Maar uiteraard aan te passen aan wat voor TeamSpeak daadwerkelijk nodig is.
PS In de tutorial op de website van TeamSpeak vind je meer over hoe TeamSpeak niet als root user te draaien: Tutorial: Setting up the TeamSpeak 2 server on Linux. Dat is wel voor versie twee, maar het principe is hetzelfde voor versie 3 uiteraard. In dit geval zou "/home/teamspeak/tss2_rc2" aan het path dienen toegevoegd te worden.
Nu staat dit blijkbaar geïnstalleerd in "/root/ts3". Dus voortgaande hierop zou "/root/ts3" aan het path toegevoegd dienen te worden in het script dat je geplaatst hebt in de directory "/etc/init.d".
Onderstaand vind je een voorbeeld van een init script (zij het wel voor vnstat).
De regel "PATH=/usr/sbin:/usr/bin:/sbin:/bin" zou in jouw geval dus worden: "PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/ts3".
Maar uiteraard aan te passen aan wat voor TeamSpeak daadwerkelijk nodig is.
PS In de tutorial op de website van TeamSpeak vind je meer over hoe TeamSpeak niet als root user te draaien: Tutorial: Setting up the TeamSpeak 2 server on Linux. Dat is wel voor versie twee, maar het principe is hetzelfde voor versie 3 uiteraard. In dit geval zou "/home/teamspeak/tss2_rc2" aan het path dienen toegevoegd te worden.
Code: Selecteer alles
#! /bin/sh
### BEGIN INIT INFO
# Provides: vnstat
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: lightweight network traffic monitor
### END INIT INFO
PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="vnStat daemon"
NAME=vnstatd
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="-d"
PIDFILE=/var/run/vnstat.pid
SCRIPTNAME=/etc/init.d/vnstat
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/15/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
do_status()
{
# Return
# 0 if daemon is stopped
# 1 if daemon is running
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
case "$?" in
0) echo "." ;;
1) echo " already running." ;;
2) echo " start failed." ; exit 1 ;;
esac
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
case "$?" in
0) echo "." ;;
1) echo " already stopped." ;;
2) echo " stop failed." ; exit 1 ;;
esac
;;
status)
echo -n "Checking $DESC: "
do_status
case "$?" in
0) echo "stopped." ; exit 3 ;;
1) echo "running." ;;
esac
;;
reload|force-reload)
echo -n "Reloading $DESC configuration..."
do_reload
echo "done."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) echo "." ;;
1) echo " old process is still running." ;;
*) echo " start failed." ; exit 1 ;;
esac
;;
*)
echo " stop failed."
exit 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac
exit 0
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
dus mijn script zal dan zo worden?
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/ts3
case "$1" in
start)
sh /root/ts3/ts3server_startscript.sh start
;;
stop)
sh /root/ts3/ts3server_startscript.sh stop
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
Denkt toch dat ik nog iets moet doen, want op deze manier werkt het nog niet.
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/ts3
case "$1" in
start)
sh /root/ts3/ts3server_startscript.sh start
;;
stop)
sh /root/ts3/ts3server_startscript.sh stop
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
Denkt toch dat ik nog iets moet doen, want op deze manier werkt het nog niet.
-
- Elite Poster
- Berichten: 2831
- Lid geworden op: 13 jul 2010, 13:21
- Uitgedeelde bedankjes: 608 keer
- Bedankt: 542 keer
Vooreerst: installeer en draai TeamSpeak zoals het hoort.
Dit wil zeggen: minstens onder een specifieke gebruiker (teamspeak) en in diens directory.
Hoe je dit moet doen staat in een voorgaand bericht van mij.
Voor je init script zijn er diverse mogelijkheden. Van uitgebreid tot summier.
Je kan je script hetzelfde laten doen zoals jijzelf doet: naar de betreffende directory gaan en dan het programma uitvoeren.
Een voorbeeld:
Bron: TeamSpeak-Server
Let ook op dat je mogelijks enkele softlinks dient aan te maken zoals op bovenstaande webpagina beschreven.
Het kan ook allemaal wat "netter" en dan zou men het volgende als basis kunnen nemen (maar allicht momenteel niet haalbaar voor jou):
Bron: Start stop script for TeamSpeak daemon (init)
PS Verwacht geen "copy and paste" script van mij (hoewel het eerste dat eigenlijk wel is mits correcte installatie). Ik ben van mening dat een root gebruiker moet weten wat hij doet en welke risico's hij (of zij) loopt, zeker indien men publiek toegankelijke programma's gaat draaien op een NAS met persoonlijke gegevens van jou én jouw naasten. Bovendien is er nog niemand doodgegaan van zelf na te denken.
Dit wil zeggen: minstens onder een specifieke gebruiker (teamspeak) en in diens directory.
Hoe je dit moet doen staat in een voorgaand bericht van mij.
Voor je init script zijn er diverse mogelijkheden. Van uitgebreid tot summier.
Je kan je script hetzelfde laten doen zoals jijzelf doet: naar de betreffende directory gaan en dan het programma uitvoeren.
Een voorbeeld:
Code: Selecteer alles
#!/bin/bash
#Zeit Abwarten um IP-adresse zu bekommen (für DHCP):
# sleep 20 ## Deze heb ik eruit gehaald omdat jij dit allicht niet nodig hebt.
# User which will run the Teamspeak-Server
USER=teamspeak
# The installation directory of the Teamspeak-Server
DIR=/home/teamspeak/ts3server
# Run the start script
su -c "cd $DIR && $DIR/ts3server_startscript.sh $1" - $USER
Let ook op dat je mogelijks enkele softlinks dient aan te maken zoals op bovenstaande webpagina beschreven.
Het kan ook allemaal wat "netter" en dan zou men het volgende als basis kunnen nemen (maar allicht momenteel niet haalbaar voor jou):
Code: Selecteer alles
#! /bin/bash
# Copyright (c) 2004 TeamSpeak team All rights reserved.
#
# Author: pwk.linuxfan 2004
# Modified by Derek "Cybernaut" Jackson - www.DigitalNines.com
#
# chkconfig: 345 85 15
# description: Runs and kills TeamSpeak Voice server at boot time and shutdown.
# Source function library.
#. /etc/rc.d/init.d/functions
# START OF CONFIG SECTION
# WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
USER=voice
DIR=/home/voice/tss2_rc2
# END OF CONFIG SECTION
# See how we were called.
case "$1" in
start)
if [ -e $DIR/tsserver2.pid ]; then
echo "tsserver2.pid already exists...server already started ?";
echo "If you are sure the server is not running, delete tsserver2.pid"
exit 1
else
if [ "$UID" = "0" ]; then
for c in $(seq 1 10); do
echo -n "!"
sleep 1
done
echo !
fi
echo "Starting the TeamSpeak Voice server..."
if [ -e $DIR/server_linux ]; then
if [ ! -x $DIR/server_linux ]; then
echo "server_linux is not executable; trying to set it."
chmod u+x $DIR/server_linux
fi
if [ -x $DIR/server_linux ]; then
WD=`pwd`
cd $DIR
su $USER -c "$DIR/server_linux -PID=tsserver2.pid" &
cd $WD
else
echo "server_linux is not executable; fix this."
exit 4
fi
else
echo "Couldnt find server_linux."
exit 5
fi
fi
;;
stop)
if [ -e $DIR/tsserver2.pid ]; then
echo -n "Stopping the TeamSpeak Voice server..."
if ( kill -TERM `cat $DIR/tsserver2.pid` ); then
for c in $(seq 1 300); do
if [ -e $DIR/tsserver2.pid ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e $DIR/tsserver2.pid ]; then
echo "server does not shutdown cleanly - killing"
kill -KILL `cat $DIR/tsserver2.pid`
rm $DIR/tsserver2.pid
sleep 5
else
echo "done"
fi
else
echo "tsserver2.pid is missing; is the server stopped already?"
#exit 7 - Should not be here as doesn't allow restart if server is already stopped.
fi
;;
restart)
$0 stop && $0 start || exit 1
;;
status)
if [ -e $DIR/tsserver2.pid ]; then
echo "The TeamSpeak Voice server is running."
exit 0
else
echo "The TeamSpeak Voice server is stopped."
exit 3
fi
;;
passwords)
if [ -e $DIR/server.log ]; then
date=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
spass=$(cat $DIR/server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/")
pass=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]\+\).*$/\1/")
echo "Following passwords were generated on $date"
echo "superadmin = \"$spass\""
echo "admin = \"$pass\""
else
echo "server.log not found; maybe the server has not been started yet?"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status|passwords}"
exit 2
esac
exit 0
PS Verwacht geen "copy and paste" script van mij (hoewel het eerste dat eigenlijk wel is mits correcte installatie). Ik ben van mening dat een root gebruiker moet weten wat hij doet en welke risico's hij (of zij) loopt, zeker indien men publiek toegankelijke programma's gaat draaien op een NAS met persoonlijke gegevens van jou én jouw naasten. Bovendien is er nog niemand doodgegaan van zelf na te denken.
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
Bedankt voor die tip, ik ga een aparte gebruiker aanmaken die alleen dient voor teamspeak.
Daarna ga ik nog eens proberen dat script te laten lopen tijdens het opstarten
Daarna ga ik nog eens proberen dat script te laten lopen tijdens het opstarten
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
zo aparte gebruiker is aangemaakt.
Nu moet ik enkel nog de symbolic link maken zodat mijn nas weet welk script hij moet starten.
Maar update-rc.d werkt niet op de nas
NAS> update-rc.d ts3.sh defaults
-ash: update-rc.d: not found
Hoe kan ik het nog anders doen?
Ook kan ik mijn script niet uitvoeren, dan krijg ik nog steeds volgende melding:
NAS> ./ts3.sh start
BusyBox v1.16.1 (2011-06-29 11:52:19 CST) multi-call binary.
Usage: readlink FILE
Display the value of a symlink
Could not locate binary file, aborting
Nu moet ik enkel nog de symbolic link maken zodat mijn nas weet welk script hij moet starten.
Maar update-rc.d werkt niet op de nas
NAS> update-rc.d ts3.sh defaults
-ash: update-rc.d: not found
Hoe kan ik het nog anders doen?
Ook kan ik mijn script niet uitvoeren, dan krijg ik nog steeds volgende melding:
NAS> ./ts3.sh start
BusyBox v1.16.1 (2011-06-29 11:52:19 CST) multi-call binary.
Usage: readlink FILE
Display the value of a symlink
Could not locate binary file, aborting
-
- Pro Member
- Berichten: 310
- Lid geworden op: 05 jan 2007, 13:02
- Locatie: Dilsen
- Uitgedeelde bedankjes: 4 keer
- Bedankt: 1 keer
ondertussen is het me gelukt.
Heb mijn script ook wat aangepast.
Ook heb ik een aparte gebruiker aangemaakt die enkel toegang heeft tot zijn home map.
script ziet er nu als volgt uit
#!/bin/sh
###BEGIN INIT INFO##################
#
# ts3.sh
# Starts TS3 Server at Startup
# and stops at shutdown /reboot
#
###END INIT INFO####################
case $1 in
start)
cd /home/teamspeak/ts3
sh /home/teamspeak/ts3/ts3server_startscript.sh start
;;
stop)
cd /home/teamspeak/ts3
sh /home/teamspeak/ts3/ts3server_startscript.sh stop
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
Heb mijn script ook wat aangepast.
Ook heb ik een aparte gebruiker aangemaakt die enkel toegang heeft tot zijn home map.
script ziet er nu als volgt uit
#!/bin/sh
###BEGIN INIT INFO##################
#
# ts3.sh
# Starts TS3 Server at Startup
# and stops at shutdown /reboot
#
###END INIT INFO####################
case $1 in
start)
cd /home/teamspeak/ts3
sh /home/teamspeak/ts3/ts3server_startscript.sh start
;;
stop)
cd /home/teamspeak/ts3
sh /home/teamspeak/ts3/ts3server_startscript.sh stop
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac