#! /bin/sh # # Start the Counter-Strike dedicated server as non-root. # # A modification of the CS Server startup script, to run the server # as a non-root user. # # ORIGINAL AUTHORS : # # Julien Escario ( pandemik@asylog.net ) # & # Cedric Rochat ( crochat@younics.org ) # # =========================================== # # What you need: # # Linux :) # awk # screen # the hlds_l & cstrike-files OR # a STEAM-installation # # YES, this script works fine with STEAM and CS 1.6 # # How to use: # # 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 # Edit the CS_USER-var to the name of the user that will run the server # # How to see the server-console: # # Just type in: screen -r hlds (or whatever you set $NAME to) # More info about screen can be found by typing "man screen" or using this nice link # http://server.counter-strike.net/server.php?cmd=howto&show=screen # # The easist way is to use this script simple as a start-script for your server # If you want to use it as a script to start the server at boot-time: # # When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the # scripts for starting the services # Now you can link the script to your runlevel-dir, here's an example for runlevel 3: # # ln -s /etc/init.d/hlds /etc/rc3.d/S90hlds # ln -s /etc/init.d/hlds /etc/rc6.d/K50hlds # # Or use it manualy like: # /etc/rc.d/init.d/hlds start # /etc/rc.d/init.d/hlds stop # # If you don't want to start the server as root you have to change this: # add the var CS_USER and uncomment it # change the lines at the "start-block" # # You must be logged in as this user to re-attach the screen! # # DOC by jwm (jwm@counter-strike.de) # The user that will run the server CS_USER=cs # Leave this alone. NAME=hlds PATH=/bin:/usr/bin:/sbin:/usr/sbin # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS! DIR=/home/cs/hlds_l # Leave this alone. DAEMON=hlds_run # Internet-server: PARAMS="-game cstrike +map de_aztec +maxplayers 16" # Leave this alone. DESC="Counter-Strike dedicated server" case "$1" in start) if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]] then echo "HLDS is already running!" else echo "Starting $DESC: $NAME" su $CS_USER -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS" fi ;; stop) if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]] then echo -n "Stopping $DESC: $NAME" kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi ;; restart) if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]] then echo -n "Stopping $DESC: $NAME" kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi echo -n "Starting $DESC: $NAME" su $CS_USER -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS" echo " ... done." ;; status) ps aux | grep -v grep | grep hlds_r > /dev/null CHECK=$? [ $CHECK -eq 0 ] && echo "HLDS is UP" || echo "HLDS is DOWN" ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac exit 0