Counter-Strike Source Server Startscript für SteamCMD
Trotzdem Counter-Strike: Source schon ein paar Jährchen alt ist und grafisch nicht mehr Stand der Dinge ist, so spielen es immer noch einige Leute. Mit ein Grund dafür denke ich ist, dass man eigene Gameserver betreiben kann, was bei vielen moderneren Shootern nicht mehr möglich ist. So betreibe auch ich gemeinsam mit Elias (einer der Korrektoren meiner Beiträge) drei Gameserver unter dem Projekt Xinty.de (inzwischen nicht mehr online).
Vor kurzem wurde das HLDSUpdateTool zur Installation und zum Updaten der Counter-Strike: Source Server – zur Freude aller Gameserver-Betreiber – durch SteamCMD ersetzt. Zu einem gescheiten Gameserver gehört natürlich auch ein Startscript, damit alles reibungslos läuft. Als ich meinen ersten CS:S Server vor ein paar Jahren aufsetzte lud ich mir das Startscript aus dem Blog von Ulrich Block (inzwischen nicht mehr verfügbar) herunter, welches jedoch nicht auf SteamCMD aktualisiert wurde.
Da es unter GPLv3-Lizenz freigegeben ist, habe ich es einmal angepasst und mich dazu entschlossen es hier zu veröffentlichen. Das Script läuft mit der aktuellen Version (Stand: 27.05.2013) von SteamCMD für Counter-Strike: Source (Orangebox). Das Script sollte nach der Anpassung der Parameter in das Hauptverzeichnis des CS:S Servers, in dem auch steam.sh liegt, abgelegt werden.
Download (als .gz): css.sh
#!/bin/bash ############################################################################ # # # Counter-Strike Source (HL2) Server Script for SteamCMD # # # # Author: # # Ulrich Block # # # # Kontakt: # # ulblock at gmx.de # # www.ulrich-block.de # # # # Edited for SteamCMD: # # Jan Karres (https://jankarres.de/) # # # # 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/>. # # # # Use: ./css.sh {start|stop|restart|update|console|check} # # # # start/restart/stop: Change status of the Counter-Strike: Source Server # # # # update: Update the Counter-Strike Source Server by using SteamCMD # # # # console: Open the screen instance of the Counter-Strike: Source Server # # STRG + A -> D to send Acreen in the background # # # # Befor use, please change the paramenter values in line 46 to 52 # # # # # ############################################################################ function init { DIR="/dir/to/the/css/server/Steam/SteamApps/common/Counter-Strike Source Dedicated Server" # Absolute dir to the CS:S server DEAMON="srcds_run" # Deamon to open; normaly not to change IP="" # IP of you server PORT="" # Default port of the CS:S Server is 27015 PARAMS="-game cstrike -ip $IP -port $PORT" # Deamon Parameters PARAMS2="+maxplayers 24 +map de_dust2" # Deamon Parameters SCREENNAME="css" # A unique name for the screen instance of the server if [ "`whoami`" = "root" ]; then echo "Responsible game server admins do not start as root!" exit 0 fi if [ -z "$DIR" ]; then echo "Please fill out the DIR variable." exit 0 fi if [ -z "$DEAMON" ]; then echo "Please fill out the DEAMON variable." exit 0 fi if [ -z "$PARAMS" ]; then echo "Please fill out the PARAMS variable." exit 0 fi if [ -z "$PARAMS2" ]; then echo "Please fill out the PARAMS2 variable." exit 0 fi if [ -z "$SCREENNAME" ]; then echo "Please fill out the SCREENNAME variable." exit 0 fi if [ -z "$IP" ]; then echo "Please fill out the IP variable." exit 0 fi if [ -z "$PORT" ]; then echo "Please fill out the PORT variable." exit 0 fi } function start_server { if [[ `screen -ls | grep $SCREENNAME` ]]; then echo "The server runs already as screen instance $SCREENNAME" else echo "Start $SCREENNAME" if [ -d "$DIR" ]; then cd "$DIR" screen -d -m -S $SCREENNAME ./$DEAMON $PARAMS $PARAMS2 else echo "Please fill out the DIR variable" fi fi } function stop_server { if [[ `screen -ls | grep $SCREENNAME` ]]; then echo -n "Sop $SCREENNAME" kill `screen -ls | grep $SCREENNAME | awk -F . '{print $1}'| awk '{print $1}'` echo " ...done" else echo "Can not find the screen instance $SCREENNAME" fi } function update_server { stop_server echo "Update" cd "$DIR" cd ../../../../ ./steamcmd.sh +login anonymous +force_install_dir . +app_update 232330 validate +quit echo " ... done" start_server } function wrong_input { echo "Usage: $0 {start|stop|restart|update|console|check}" exit 1 } function get_screen { screen -r $SCREENNAME } function check_ping { if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then sleep 10 if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then stop_server start_server fi fi } init case "$1" in start) start_server ;; stop) stop_server ;; restart) stop_server start_server ;; update) update_server ;; console) get_screen ;; check) check_ping ;; *) wrong_input ;; esac exit 0
2 Kommentare. Hinterlasse eine Antwort
Bin kein PRo, aber das ist ein Syntaxfehler:
if [ „`whoami`“ = „root“ ]; then
das muss so sein
if [ „whoami“ = „root“ ]; then
also bei if [ „`whoami`“ = „root“ ]; then gibt es einen Syntaxfehler in der Codeansicht !
Habs gerade noch einmal ausprobiert. Läuft unter Debian Wheezy ohne Probleme.