Sie sind nicht angemeldet.

  • »Canc3lL0g0ut« ist der Autor dieses Themas

Beiträge: 881

Wohnort: L.E.

Beruf: KiN im Betriebsdienst

Rootserver vorhanden: Nein

  • Nachricht senden

1

Mittwoch, 16. Februar 2011, 18:07

Startscript für mehrere Server

Hallo Ihr lieben,

ich mal wieder. Ich verwende bei mir auf dem Server folgendes Startscript:

Spoiler Spoiler

#! /bin/bash
#
# Start the Counter-Strike: Source dedicated server.
#
# AUTHORS :
#
# Julien Escario ( <!-- e --><a href="mailto:pandemik@azilog.net">pandemik@azilog.net</a><!-- e --> )
# &
# Cedric Rochat ( <!-- e --><a href="mailto:crochat@younics.org">crochat@younics.org</a><!-- e --> )
# &
# Cmdr._Firewalker ( <!-- e --><a href="mailto:cmdr._firewalker@web.de">cmdr._firewalker@web.de</a><!-- e --> )
#
# ===========================================
#
# What you need:
#
# Linux :)
# awk
# screen
# the srcds_l & cstrike files (obtainable via steam)
#
# How to use:
#
# Edit the CS_USER-Var to the user running your cs-servers
# Edit the DIR-Var to fit your system (just contains the path to the dir that contains srcds_run)
# Edit the PARAMS-Var to fit your needs
# - standard is startup as internet server
# if you use multiple scripts on one system you should change the NAME-var (otherwise
# all will be stopped if you run the script with "stop", and status will be useless)
#
# When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the
# scripts for starting the services) and set the execute permission.
# Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
# ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/S90srcds
# ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/K50srcds
# or use update-rc.d if you got a system using that tool (like Debian, see manpage)
#
# Or use it manually like:
# ./srcds start
# ./srcds stop
#
# To see the server-console start the script with the parameter "watch".
#
# DOC by jwm (jwm@counter-strike.de)

# !!!!!!!!!!!!!! CHANGE THIS TO THE USER YOU USE FOR YOUR SERVER !!!!!!!!!!!!!!!
CS_USER=srcds
PATH=/bin:/usr/bin:/sbin:/usr/sbin

# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/home/srcds/orangebox

DAEMON=srcds_run

# LAN server:
# PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"
# Internet server:
PARAMS="-game cstrike +map de_dust2 +maxplayers 20 +port 27015 -autoupdate"

NAME=SourceServer
DESC="CS:S dedicated server 1"

# No edits (should be) necessary beyond this line

if [ ! -x `which awk` ]; then echo "You need awk for this script"; exit 1; fi
if [ ! -x `which screen` ]; then echo "You need screen (the program, moron!) for this script"; exit 1; fi

if [ `whoami` = root ]
then
usagetype=root
else
usagetype=nonroot
fi

start() {
if [ ! -d $DIR ]; then echo " ... No such directory: $DIR!"; exit 1; fi
if [ ! -x $DIR/$DAEMON ]; then echo "$DIR/$DAEMON does not exist or is not executable!"; exit 1; fi
if status; then echo " ... $DESC: $NAME is already running!"; exit 1; fi

case "$usagetype" in
root)
su - $CS_USER -c "cd $DIR ; screen -AmdS $NAME ./$DAEMON $PARAMS"
;;
nonroot)
cd $DIR ; screen -AmdS $NAME ./$DAEMON $PARAMS
;;
esac

}

stop () {
if ! status; then echo " ... $DESC $NAME could not be found. Probably not running."; exit 1; fi

case "$usagetype" in
root)
tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
su - $CS_USER -c "screen -r $tmp -X quit"
;;
nonroot)
screen -r $(screen -ls | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}') -X quit
;;
esac
}

status () {
case "$usagetype" in
root)
su - $CS_USER -c "screen -ls" | grep [.]$NAME[[:space:]] > /dev/null
;;
nonroot)
screen -ls | grep [.]$NAME[[:space:]] > /dev/null
;;
esac
}

watch () {
if ! status; then echo "$DESC $NAME could not be found. Probably not running."; exit 1; fi

case "$usagetype" in
root)
tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
su - $CS_USER -c "screen -r $tmp"
;;
nonroot)
screen -r $(screen -ls | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
;;
esac
}

case "$1" in
start)
echo "Starting $DESC: $NAME"
start
echo " ... done."
;;

stop)
echo "Stopping $DESC: $NAME"
stop
echo " ... done."
;;

restart)
echo "Restarting $DESC: $NAME"
status && stop
start
echo " ... done."
;;

status)
if status
then echo "$DESC: $NAME is UP"
else echo "$DESC: $NAME is DOWN"
fi
;;
watch)
watch
;;

*)
echo "Usage: $0 {start|stop|status|restart|watch}\nWhile watching press ctrl-a, ctrl-d to stop watching without stopping the server."
exit 1
;;

esac


exit 0


Nun ist dies bei einem Server ja kein Problem, gerade was einen Restart oder "watch" ausmacht. Nun, da wir nun 2 Server, vielleicht bald 3 Server haben (auf ein und derselben Maschine) habe ich das Problem, wenn ich "./run.sh watch" eingebe immer noch ein "Screen" Terminal / PID angeben muss. Ist blöd wenn die GameServer dann jeden morgen um 6 neu gestartet werden sollen, wenn er nicht weiß welchen Server er neustarten soll. Nun suche ich ein Startscript, womit ich 3 Server unabhänig voneinander starten, stoppen und "überwachen" kann. Kenn soetwas jemand?

Für Eure Hilfe wäre ich sehr Dankbar
24/7 Teamspeak³ Server:


Linux is like a wigwam → No windows. No gates. Apache inside.

1. Frage des Admin: was wurde vorher verändert?
2. Antwort des Users: nichts
3. Frage des Admin: was wurde verändert, bevor NICHTS verändert wurde?

Ene mene muh gebasht wirst du,
ene mene miste headOr durch die Kiste,
ene mene meck kaum siehste mich schon fliegste weg :D

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Mittwoch, 16. Februar 2011, 18:52

Vielleicht wäre das hier etwas für dich?
http://downloads.gugy.eu/bash/server.sh/server.tar.gz

Nutzen wir auch :D

MfG
Impact

  • »Canc3lL0g0ut« ist der Autor dieses Themas

Beiträge: 881

Wohnort: L.E.

Beruf: KiN im Betriebsdienst

Rootserver vorhanden: Nein

  • Nachricht senden

3

Mittwoch, 16. Februar 2011, 19:38

Ich hab mir jetzt mal die einzelnen Dateien angeschaut. Kann ich damit 3 Server unabhänig starten, restarten, stoppen und überwachen?

Sieht iwie nicht dannach aus. Aber ich kann mich auch täuschen ;) und ich lass mich auch gern eines besseren belehren. :zwinker:
24/7 Teamspeak³ Server:


Linux is like a wigwam → No windows. No gates. Apache inside.

1. Frage des Admin: was wurde vorher verändert?
2. Antwort des Users: nichts
3. Frage des Admin: was wurde verändert, bevor NICHTS verändert wurde?

Ene mene muh gebasht wirst du,
ene mene miste headOr durch die Kiste,
ene mene meck kaum siehste mich schon fliegste weg :D

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

4

Mittwoch, 16. Februar 2011, 22:52

Yup

Das Script ist für jeden Server einzeln
sprich für jeden Server ein Script + Configdatei.


MfG
Impact

  • »Canc3lL0g0ut« ist der Autor dieses Themas

Beiträge: 881

Wohnort: L.E.

Beruf: KiN im Betriebsdienst

Rootserver vorhanden: Nein

  • Nachricht senden

5

Freitag, 18. Februar 2011, 09:12

Ahh, ok. Hab die Tage noch außerhalb zu tun, dann kann ich es mal testen. Danke :bestteam:
24/7 Teamspeak³ Server:


Linux is like a wigwam → No windows. No gates. Apache inside.

1. Frage des Admin: was wurde vorher verändert?
2. Antwort des Users: nichts
3. Frage des Admin: was wurde verändert, bevor NICHTS verändert wurde?

Ene mene muh gebasht wirst du,
ene mene miste headOr durch die Kiste,
ene mene meck kaum siehste mich schon fliegste weg :D

  • »Canc3lL0g0ut« ist der Autor dieses Themas

Beiträge: 881

Wohnort: L.E.

Beruf: KiN im Betriebsdienst

Rootserver vorhanden: Nein

  • Nachricht senden

6

Sonntag, 20. Februar 2011, 17:21

OK, das Script von Euch ist net schlecht, aber ... mich persönlich stört, dass ich bei allen Servern extra schauen muss (ich mags bequemer ;))
Ich such etwas womit ich alle Server "Zentral" steuern kann - also in ein Verzeichnis und von dort aus Server starten, stoppen überwachen, egal in welchem Verzeichnis sich dieser Server befindet.
24/7 Teamspeak³ Server:


Linux is like a wigwam → No windows. No gates. Apache inside.

1. Frage des Admin: was wurde vorher verändert?
2. Antwort des Users: nichts
3. Frage des Admin: was wurde verändert, bevor NICHTS verändert wurde?

Ene mene muh gebasht wirst du,
ene mene miste headOr durch die Kiste,
ene mene meck kaum siehste mich schon fliegste weg :D

Koffein

Fortgeschrittener

Beiträge: 353

Rootserver vorhanden: Nein

  • Nachricht senden

7

Montag, 21. Februar 2011, 17:00

Hey, nimm doch das Script aus der Wiki ;)
http://sourceserver.info/wiki/installati…andalone/script

Dort musst du für jeden Server eine Config eintragen, hast aber anschließend die Möglichkeit diese dann in eine Liste einzutragen und die Server dann über die Liste zu (neu-)starten, stoppen, etc...

Wenn du dann noch die Abkürzung für die Shells nutzt ist es ganz bequem :)
Bin gerade dabei 2 Funktion zu implementieren, einmal den Demoupload bzw generellen Upload von Dateien auf einen FTP Server und das Servercleaner Script.

Wenn ich das sowei fertig habe kann Dead_Eye da ja mal rüberschauen und das evenutell in die Wiki hochladen ;)
Sind ja schließlich nur Scripte aus der Wiki miteinander kombiniert und etwas modifiziert.

Ähnliche Themen

Verwendete Tags

Linux, Source, Startscript