• Blog
  • Raspberry Pi
  • Über mich
  • Projekte
  • devowl.io

Counter-Strike Source Server Startscript für SteamCMD

09. Juni 2013
Tipps und Tricks
2 Kommentare

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

  • lulu
    August 26, 2013 9:11 am

    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 !

    Antworten
    • Jan Karres
      August 31, 2013 7:31 pm

      Habs gerade noch einmal ausprobiert. Läuft unter Debian Wheezy ohne Probleme.

      Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Jan Karres
Jan Karres
Wirtschaftsinformatiker
Facebook
Twitter
YouTube
LinkedIn
Xing
GitHub

Themen

  • Blogging
  • Debian (Linux)
  • Eine Geschichte aus dem Leben des Jan
  • Fotos
  • Gaming
  • Gedanken
  • Linksammlungen
  • Privates
  • Projekte
  • Raspberry Pi
    • Einplatinencomputer (außer Raspberry Pi)
  • Schule und Studium
  • Tipps und Tricks
  • Videos
  • Vorgestellt
  • WordPress

Projekte

Dieser Blog ist meine kleine Base im Internet, in der ich über Themen schreibe, die mich persönlich beschäftigen. Abseits davon habe ich weitere Projekte im Netz, die teils aus Spaß entstanden, jedoch zum Teil auch meinen Kühlschrank füllen.

Alle Projekte

JanKarres.de © 2007-2022

Neueste Beiträge

  • Raspberry Pi: WLAN Access Point mit NordVPN (VPN Router) einrichten Dezember 5, 2020
  • Real Cookie Banner: Wie das Opt-in Cookie Banner für WordPress entstand November 18, 2020
  • Blog Setup erneut: Aufräumen einer kleinen Historie Oktober 13, 2020
  • devowl.io: Auf geht’s in das WordPress Business! März 10, 2020
  • Kuschelpartys: Nähe und Geborgenheit einfach erleben September 30, 2018

devowl.io

Meine Brötchen verdiene ich im Internet. Dazu habe ich gemeinsam mit meinem Kollegen Matze die devowl.io GmbH gegründet. Gemeinsam entwickeln und vertreiben wir in unser Plugins und Entwickler-Tools im WordPress Umfeld.

Mehr erfahren
  • Datenschutzerklärung
  • Impressum