Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: IT-News, Tutorials, Reviews, Gaming - skV-NET. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

blulach

Fortgeschrittener

  • »blulach« ist der Autor dieses Themas

Beiträge: 363

Registrierungsdatum: 28. Oktober 2007

Wohnort: Chur

Beruf: IT Services Engineer

Danksagungen: 393

  • Nachricht senden

1

Sonntag, 10. Mai 2009, 23:30

CS Server Startscript

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#! /bin/bash
#
# Start the Counter-Strike dedicated server.
#
# AUTHORS :
#
# Julien Escario ( pandemik@azilog.net )
# &
# Cedric Rochat ( crochat@younics.org )
# &
# Cmdr._Firewalker ( cmdr._firewalker@web.de )
#
# ===========================================
#
# What you need:
#
# Linux :)
# awk
# screen
# the hlds_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 hlds_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/hlds /etc/rc.d/rc3.d/S90hlds
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/K50hlds
# or use update-rc.d if you got a system using that tool (like Debian, see manpage)
#
# Or use it manually like:
# ./hlds start
# ./hlds 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=csserveruser

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/hlds

DAEMON=hlds_run

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

NAME=csserver
DESC="CS dedicated server"

# 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

Es muss noch an eure Installation angepasst werden, siehe dazu auch die Kommentare im Script selber. Wenn das geschehen ist, reicht hlds start um den Server zu starten.

Soll das Script den Server beim Systemstart starten, wird es etwas aufwändiger:
Dafür braucht es ein Script, dass dorthin kommt, wo auch die anderen Scripten für die Dienste liegen, die beim Systemstart automatisch ausgeführt werden sollen. Bei den meisten Distributionen ist dies /etc/rc.d/init.d oder /etc/init.d/
Auch dafür gibt's ein Script, dass aus Sicherheitsgründen via su dann den User wechselt. Dieses Script, das auf dem oben genannten aufbaut, ist nur für den Systemstart gedacht und ihr bekommt es hier

Hier eine Beispielinstallation unter RH:
1) Script herunterladen und zB als "hlds_start" nach /etc/rc.d/init.d speichern
2) Script mit chmod 755 /etc/rc.d/init.d/hlds_start ausführbar machen
3) im Script die Variablen DIR, DAEMON & PARAMS den eigenen Wünschen anpassen
4) Testen, ob alles läuft: /etc/rc.d/init.d/hlds_start start bzw /etc/rc.d/init.d/hlds_start stop sollten funktionieren.
5) Dann die Links in das jeweilige Runlevel erstellen:
ln -s /etc/rc.d/init.d/hlds_start /etc/rc.d/rc3.d/S90hlds_start
ln -s /etc/rc.d/init.d/hlds_start /etc/rc.d/rc3.d/K30hlds_start

Wenn dann alles zufriedenstellend läuft, gelangt man mit screen -r cstrike an die Serverkonsole.

Quelle: http://www.counter-strike.de/content/server/linux_steam.php


P.S. konnte das script nocht nicht selbst ausprobieren, da meine ferien nun zu ende sind :) versuche aber das ganze noch nachzuholen!

Social Bookmarks

Thema bewerten