[Debian] CS:GO server & pootje baden in linux

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mastermuppet
  • Registratie: Januari 2013
  • Laatst online: 16-05 13:42
Beste Tweakers,

Ik draai inmiddels een CS:GO Server op een Debian VPS, na wat stomme beginnersfouten (heb weinig tot ervaring met Linux zie ook: Dit topic) heb ik het uiteindelijk toch voor elkaar gekregen.

Wil nu graag een aantal dingen toevoegen en om te beginnen dacht ik aan een start script dat ik heb gevonden, om het starten van de server te versimpelen.

Aanpassen van het script gaat me wel lukken, maar zou het graag nog verder versimpelen.

Script dat ik heb gevonden.
code:
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#! /bin/bash

##################################################################################
#                                                                                #
#  Counter-Strike : Global Offensive Server Launcher                             #
#                                                                                #
#  Author: Cr@zy                                                                 #
#  Contact: http://www.crazyws.fr                                                #
#  Related post: [URL="http://goo.gl/HFFGy","http://www.crazyws.fr/tutos/installer-un-serveur-counter-strike-global-offensive-X4LCM.html"]http://goo.gl/HFFGy[/URL]                                             #
#                                                                                #
#  This program is free software: you can redistribute it and/or modify it       #
#  under the terms of the GNU General Public License as published by the Free    #
#  Software Foundation, either version 3 of the License, or (at your option)     #
#  any later version.                                                            #
#                                                                                #
#  This program is distributed in the hope that it will be useful, but WITHOUT   #
#  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
#  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more         #
#  details.                                                                      #
#                                                                                #
#  You should have received a copy of the GNU General Public License along       #
#  with this program.  If not, see http://www.gnu.org/licenses/.                 #
#                                                                                #
#  Usage: ./csgo-server-launcher.sh {start|stop|status|restart|console|update}   #
#    - start: start the server                                                   #
#    - stop: stop the server                                                     #
#    - status: display the status of the server (down or up)                     #
#    - restart: restart the server                                               #
#    - console: display the server console where you can enter commands.         #
#     To exit the console without stopping the server, press CTRL + A then D.    #
#    - update: update the server                                                 #
#                                                                                #
##################################################################################

SCREEN_NAME="csgo"
USER="steam"
IP="1.2.3.4"

DIR_STEAMCMD="/var/steamcmd"
STEAM_LOGIN="username"
STEAM_PASSWORD="password"
STEAM_RUNSCRIPT="$DIR_STEAMCMD/runscript_$SCREEN_NAME"

DIR_GAME="$DIR_STEAMCMD/games/csgo"
DIR_LOGS="$DIR_GAME/csgo/logs"
DAEMON_GAME="srcds_run"

UPDATE_LOG="$DIR_LOGS/update_`date +%Y%m%d`.log"
UPDATE_EMAIL="monitoring@foo.com"
UPDATE_RETRY=3

PARAM_START="-game csgo -console -usercon -secure -autoupdate -steam_dir ${DIR_STEAMCMD} -steamcmd_script ${STEAM_RUNSCRIPT} -nohltv -maxplayers_override 28 +sv_pure 0 +hostport 27015 +ip ${IP} +net_public_adr ${IP} +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust2"
PARAM_UPDATE="+login ${STEAM_LOGIN} ${STEAM_PASSWORD} +force_install_dir ${DIR_GAME} +app_update 740 validate +quit"

# Do not change this path
PATH=/bin:/usr/bin:/sbin:/usr/sbin

# No edits necessary beyond this line
if [ ! -x `which awk` ]; then echo "ERROR: You need awk for this script (try apt-get install awk)"; exit 1; fi
if [ ! -x `which screen` ]; then echo "ERROR: You need screen for this script (try apt-get install screen)"; exit 1; fi

function start {
  if [ ! -d $DIR_GAME ]; then echo "ERROR: $DIR_GAME is not a directory"; exit 1; fi
  if [ ! -x $DIR_GAME/$DAEMON_GAME ]; then echo "ERROR: $DIR_GAME/$DAEMON_GAME does not exist or is not executable"; exit 1; fi
  if status; then echo "$SCREEN_NAME is already running"; exit 1; fi
  
  # Create runscript file for autoupdate
  echo "Create runscript file '$STEAM_RUNSCRIPT' for autoupdate..."
  cd $DIR_STEAMCMD
  echo "login $STEAM_LOGIN $STEAM_PASSWORD" > $STEAM_RUNSCRIPT
  echo "force_install_dir $DIR_GAME" >> $STEAM_RUNSCRIPT
  echo "app_update 740" >> $STEAM_RUNSCRIPT
  echo "quit" >> $STEAM_RUNSCRIPT
    
  if [ `whoami` = root ]
  then
    su - $USER -c "cd $DIR_GAME ; screen -AmdS $SCREEN_NAME ./$DAEMON_GAME $PARAM_START"
  else
    cd $DIR_GAME
    screen -AmdS $SCREEN_NAME ./$DAEMON_GAME $PARAM_START
  fi
}

function stop {
  if ! status; then echo "$SCREEN_NAME could not be found. Probably not running."; exit 1; fi

  if [ `whoami` = root ]
  then
    tmp=$(su - $USER -c "screen -ls" | awk -F . "/\.$SCREEN_NAME\t/ {print $1}" | awk '{print $1}')
    su - $USER -c "screen -r $tmp -X quit"
  else
    screen -r $(screen -ls | awk -F . "/\.$SCREEN_NAME\t/ {print $1}" | awk '{print $1}') -X quit
  fi
}

function status {
  if [ `whoami` = root ]
  then
    su - $USER -c "screen -ls" | grep [.]$SCREEN_NAME[[:space:]] > /dev/null
  else
    screen -ls | grep [.]$SCREEN_NAME[[:space:]] > /dev/null
  fi
}

function console {
  if ! status; then echo "$SCREEN_NAME could not be found. Probably not running."; exit 1; fi

  if [ `whoami` = root ]
  then
    tmp=$(su - $USER -c "screen -ls" | awk -F . "/\.$SCREEN_NAME\t/ {print $1}" | awk '{print $1}')
    su - $USER -c "screen -r $tmp"
  else
    screen -r $(screen -ls | awk -F . "/\.$SCREEN_NAME\t/ {print $1}" | awk '{print $1}')
  fi
}

function update {
  if [ ! -d $DIR_LOGS ]; then mkdir $DIR_LOGS; fi
  if [ -z "$1" ]; then retry=0; else retry=$1; fi
  
  if [ -z "$2" ]
  then
    if status
    then
      stop
      echo "Stop $SCREEN_NAME before update..."
      sleep 5
      relaunch=1
    else
      relaunch=0
    fi
  else
    relaunch=$2
  fi
  
  # save motd.txt before update
  cp $DIR_GAME/csgo/motd.txt $DIR_GAME/csgo/motd.txt.bck
  
  echo "Starting the $SCREEN_NAME update..."
  
  if [ `whoami` = root ]
  then
    su - $USER -c "cd $DIR_STEAMCMD ; STEAMEXE=steamcmd ./steam.sh $PARAM_UPDATE 2>&1 | tee $UPDATE_LOG"
  else
    cd $DIR_STEAMCMD
    STEAMEXE=steamcmd ./steam.sh $PARAM_UPDATE 2>&1 | tee $UPDATE_LOG
  fi
  
  # restore motd.txt
  mv $DIR_GAME/csgo/motd.txt.bck $DIR_GAME/csgo/motd.txt
  
  if [ `egrep -ic "Success! App '740' fully installed." "$UPDATE_LOG"` -gt 0 ]
  then
    echo "$SCREEN_NAME updated successfully"
  else
    if [ $retry -lt $UPDATE_RETRY ]
    then
      retry=`expr $retry + 1`
      echo "$SCREEN_NAME update failed... retry $retry/3..."
      update $retry $relaunch
    else
      echo "$SCREEN_NAME update failed... exit..."
      exit 1
    fi
  fi
  
  # send e-mail
  if [ ! -z "$UPDATE_EMAIL" ]; then cat $UPDATE_LOG | mail -s "$SCREEN_NAME update for $(hostname -f)" $UPDATE_EMAIL; fi
  
  if [ $relaunch = 1 ]
  then
    echo "Restart $SCREEN_NAME..."
    start
    sleep 5
    echo "$SCREEN_NAME restarted successfully"
  else
    exit 1
  fi
}

function usage {
  echo "Usage: $0 {start|stop|status|restart|console|update}"
  echo "On console, press CTRL+A then D to stop the screen without stopping the server."
}

case "$1" in

  start)
    echo "Starting $SCREEN_NAME..."
    start
    sleep 5
    echo "$SCREEN_NAME started successfully"
  ;;

  stop)
    echo "Stopping $SCREEN_NAME..."
    stop
    sleep 5
    echo "$SCREEN_NAME stopped successfully"
  ;;
 
  restart)
    echo "Restarting $SCREEN_NAME..."
    status && stop
    sleep 5
    start
    sleep 5
    echo "$SCREEN_NAME restarted successfully"
  ;;

  status)
    if status
    then echo "$SCREEN_NAME is UP"
    else echo "$SCREEN_NAME is DOWN"
    fi
  ;;
 
  console)
    echo "Open console on $SCREEN_NAME..."
    console
  ;;
  
  update)
    echo "Updating $SCREEN_NAME..."
    update
  ;;

  *)
    usage
    exit 1
  ;;

esac

exit 0


Usage: ./csgo-server-launcher.sh {start|stop|status|restart|console|update}


Door de naam van het script te veranderen zou ik het kunnen verkorten tot:

./csgo.sh start, stop, ect.


Maar is het mogelijk om het nog verder te verkorten bijv?
./csgo start


Wil dit script gaan gebruiken om een aantal vrienden de mogelijk te geven om de server te updaten/restarten na een patch of crash.
Wil het dus graag zo makkelijk mogelijk maken.

Verder zou ik er graag meerdere servers mee kunnen starten en ook onafhankelijk van elkaar, maar vermoedt dat dit nog even te ver gegrepen is.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 15-07 22:20

Hero of Time

Moderator LNX

There is only one Legend

Namen voor scripts doen er niet veel aan, maar voor init scripts wel. Volgens mij iig, weet 't niet zeker. Check dat even.
Verder, je hebt nu .sh achter de naam. Dit is een extensie die niet nodig is. Linux, itt Windows, heeft geen extensies nodig om bestanden te kunnen openen. Het doet dat adhv mime-types. Type maar eens 'file <bestand>' in een shell, dan zie je wat voor bestand 't is.

Kijk ook eens naar alias. Hiermee kan je een commando maken, voor alleen je gebruiker, met allerlei extra'tjes. Voorbeeldje, standaard doet ls bestanden weergeven. Je moet ls -l typen voor een uitgebreidere weergave. Je zou een alias kunnen maken, genaamd ll, om ls -l direct uit te voeren.
Zo zou je ook een alias kunnen maken om de server te herstarten e.d. Hoef je niet dat lange commando te typen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • d1ng
  • Registratie: Augustus 2009
  • Laatst online: 06-05-2024
Wat is de vraag eigenlijk ? Waar loop je tegenaan ?

Acties:
  • 0 Henk 'm!

  • Mastermuppet
  • Registratie: Januari 2013
  • Laatst online: 16-05 13:42
Dus ik kan zonder problemen de naam van het script wijzigen?
Kijk ook eens naar alias. Hiermee kan je een commando maken, voor alleen je gebruiker, met allerlei extra'tjes. Voorbeeldje, standaard doet ls bestanden weergeven. Je moet ls -l typen voor een uitgebreidere weergave. Je zou een alias kunnen maken, genaamd ll, om ls -l direct uit te voeren.
Zo zou je ook een alias kunnen maken om de server te herstarten e.d. Hoef je niet dat lange commando te typen.
Zal hier eens na kijken lijkt me een goeie oplossing.
d1ng schreef op zondag 27 januari 2013 @ 21:47:
Wat is de vraag eigenlijk ? Waar loop je tegenaan ?
Momenteel wil ik dus een simpele manier om de server te starten, stoppen en restarten met behulp van dat script wat ik gevonden heb, maar omdat ik niets van Linux afweet behalve de zeer beperkte kennis die ik heb opgedaan via het gebruik van m'n Dreambox hoop ik in de goeie richting geholpen te worden was bijvoorbeeld zelf nooit op zoiets als alias gekomen.

Vervolgens zou ik het willen uitbreiden, door bijvoorbeeld meerdere servers te starten met een uitgebreider script.

Zo zou ik nog wel een aantal dingen kunnen noemen waar ik meer over zou willen weten, maar hou het bij 1 ding tegelijk op het moment.

Wish/ToDo list:

1. Start/stop script met simpele bediening voor meerdere servers
2. simpele manier om een nieuwe GO server toe te voegen bijv. via een script
3. Simpele manier om het script te bedienen zonder via SSH te hoeven inloggen.
4. Heb vanwege de VPS beperkt geheugen 512MB om precies te zijn, dus zou graag zoveel mogelijk
geheugen besparen, al heb ik geen idee in hoeverre dat mogelijk is.


1, 2 en 3 had ik namelijk allemaal tot m'n beschikking toen ik in het verleden nog CS 1.6 server draaide.
heb lopen zoeken of ik die nog had, maar lijkt erop van niet.

[ Voor 61% gewijzigd door Mastermuppet op 27-01-2013 23:19 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 15-07 22:20

Hero of Time

Moderator LNX

There is only one Legend

d1ng schreef op zondag 27 januari 2013 @ 21:47:
Wat is de vraag eigenlijk ? Waar loop je tegenaan ?
Z'n vragen zijn:
- Kan 't bestand makkelijk hernoemd worden zonder problemen;
- Kan het script vereenvoudigd worden wat hij gevonden heeft;
- Hoe kan ik meerdere instances starten van de game server.

Het eerste is een ja, maar ik weet niet 100% zeker of dat ook voor init scripts geldt. Wat hij heeft gevonden echter, is geen init script, want er missen wat delen aan het begin hiervoor.

Het tweede, tja, daar moet je meer scripting kennis voor hebben. Zo op het eerste gezicht vind ik 'm goed genoeg voor wat 't moet doen. Je kan 'm altijd vereenvoudigen, maar er is een reden waarom 't zo is geschreven. Ik heb niet de nodige kennis om een definitief oordeel over het script te kunnen geven.

Het laatste, geen idee, ik ken de software niet.

[ Voor 6% gewijzigd door Hero of Time op 27-01-2013 23:17 ]

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Mastermuppet
  • Registratie: Januari 2013
  • Laatst online: 16-05 13:42
Hero Of Time schreef op zondag 27 januari 2013 @ 23:16:
- Hoe kan ik meerdere instances starten van de game server.


Het laatste, geen idee, ik ken de software niet.
Ik weet inmiddels zelf wel hoe je meerdere instances start, alleen niet hoe ik het in een script moet zetten
daarvoor zal ik nog wat meer leeswerk moeten doen.

Ben nu echter drukker met de config files van de GO server zelf daar moet ook nog een boel aan gebeuren heb ik wel gemerkt :( dat is niet zo moeilijk maar wel tijd rovend

Heb nog wel een snelle vraag
less /proc/meminfo

laat me zien hoeveel geheugen ik in gebruik heb en vrij is,
maar is er geen manier om het live te monitoren inclusief het gebruik van de proc?

Type the top command:
$ top


Geeft me de info over de proc wat ik zo even snel kon vinden.

[ Voor 25% gewijzigd door Mastermuppet op 27-01-2013 23:42 ]

Pagina: 1