Einzelnen Beitrag anzeigen

wfoertsch

Registriert seit: 14. Jan 2005
Ort: Berlin
71 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Linux-teamspeak beim hochfahren starten

  Alt 28. Feb 2006, 08:14
hoi


ist zwar kein chroot (jail) aber dropt beim starten die rootrechte und looft dann als user ...



teamspe 3577 0.0 0.3 15700 2028 ? S Feb17 0:00 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3578 0.0 0.3 15700 2028 ? S Feb17 0:00 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3579 0.0 0.3 15700 2028 ? S Feb17 1:54 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3580 0.0 0.3 15700 2028 ? S Feb17 5:33 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3581 0.0 0.3 15700 2028 ? S Feb17 5:10 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3582 0.0 0.3 15700 2028 ? S Feb17 0:00 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak
teamspe 3583 0.0 0.3 15700 2028 ? S Feb17 0:00 /home/teamspeak/tss2_rc2/server_linux -pid=/home/teamspeak/tss2_rc2/tss.pid -db=/home/teamspeak





#! /bin/sh
#
# Shellscript, startet einen TeamSpeakServer im
# Kontext des angegebenen Benutzers.
#
# FearFactor (f@fearfactor.de)
#
# ============================================
#
# Voraussetzungen:
#
# - Ein installierter/entpackter TeamSpeakServer
# - der Benutzer in dessen Kontext der Server laufen soll
# muss existieren und muss volle Rechte auf den TSS-Ordner und Dateien
# haben. (aktuellen Status mit "ls -l" anzeigen)
# Siehe bei Bedarf die Manpages von chown (Besitzer ändern)
# Beispiel: "chown user:gruppe datei"
# Rechte ändert man mit "chmod"
# Beispiel: "chmod 770 datei"
# - Die Variablen müssen Deinem System angepasst werden.
#
# Das Script am Besten als rctss im Ordner /etc/init.d erstellen,
# und ausführbar machen (z.B. mit "chmod 755 rctss")
#
# damit der Server von jedem Verzeichnis aus gestartet und beendet werden
# kann, erstellt man am Besten einen harten link ins Verzeichnis /usr/bin,
#
# Beispiel "ln Pfad-zum-script /usr/bin" :
# Beispiel "ln /etc/init.d/rctss /usr/bin"
#
# Soll der Server beim Hochfahren automatisch starten,
# erstelle noch einen Link im init.d-Verzeichnis
# (kann je nach Distribution abweichen!)
#
# und dann noch einen symbolischen Link ins Verzeichnis
# des richtigen Runlevels erstellen
# (den Standardrunlevel am Besten in /etc/inittab nachsehen):
#
# Beispiel Debian "ln -s /etc/init.d/rctss /etc/rc2.d/S99tss"
# Beispiel SuSE "ln -s /etc/init.d/rctss /etc/rc.d/rc2.d/S99tss"
#
#
# Um den Server manuell zu starten/stoppen verwende:
# "rctss start"
# "rctss stop"
#
# "rctss status" zeigt alle laufenden TSS-Prozesse und
# die Adminpasswörter an! (ausgelesen aus server.log)



# < !!! BITTE DIESE VARIABLEN ANPASSEN !!! >
#
# Unter welchem Benutzer soll der Server laufen?
DAEMON_USER="teamspeak"
# Beschreibung, Verzeichnis & Executable des Servers
DESC="TeamSpeakServer"
DIR=/home/teamspeak/tss2_rc2
BIN=server_linux
#
# </ !!! BITTE DIESE VARIABLEN ANPASSEN !!! >


NAME="tss"
DAEMON=$DIR/$BIN
PATH=$DIR:/bin:/usr/bin:/sbin:/usr/sbin
PARAMS="-pid=$DIR/$NAME.pid -db=$DIR/server.dbs -ini=$DIR/server.ini -log=$DIR/server.log -httpdocs=$DIR/httpdocs"



# Sollte der Server nicht vorhanden sein,
# geht natürlich nix!

test -x $DAEMON || echo Daemon im Ordner $DIR nicht gefunden.
test -x $DAEMON || echo ===> Bitte die Variablen DIR und BIN überprüfen!
test -x $DAEMON || exit 0




case "$1" in
start)
echo "Starte $DESC"
cd $DIR
# startet den Server im Kontext des oben angegebenen Benutzers,
# es sei denn der Server läuft bereits:
ps -lC $BIN | grep -e $BIN > /dev/null && echo "===> $DESC läuft bereits!"
ps -lC $BIN | grep -e $BIN > /dev/null || su $DAEMON_USER -c "$DAEMON $PARAMS > /dev/null"
sleep 3
;;


stop)
echo "Stoppe $DESC"
test -f $DIR/$NAME.pid && kill -TERM `cat $DIR/$NAME.pid`
test -f $DIR/$NAME.pid || echo "===> $DESC läuft im Moment nicht!"
sleep 2
;;

restart)
$0 stop
sleep 4
$0 start
;;

status)
echo "Laufende Prozesse von $DESC:"
ps -lC $BIN | grep -e $BIN || echo "===> kein aktiver Prozess vorhanden!"
echo
echo "Passwörter ADMINISTRATION (Quelle: server.log):"
echo --
cat $DIR/server.log|grep -e "admin account"|tr " " "\n"|grep -A 3 -e "username:"
echo --
echo
;;

*)
echo "Parameter: $0 {start|stop|status|restart}"
exit 1
;;
esac
Wolfgang Foertsch
  Mit Zitat antworten Zitat