With these scripts I maintain a CSS server.
My server runs on FreeBSD. Since the CSS software is not available as source, I decided to run it within a jail. It runs under linux-compat kernel module.
There is a simple script in C just calls the startupscript:
=begin text#!/bin/sh USER=CHANGETHIS script=/home/$USER/bin/css sucmd="su - $USER"
case $1 in start) $sucmd $script tsstart $sucmd $script start ;; stop) $sucmd $script tsstop $sucmd $script stop ;; esac
=end text(Change the variable USER to your jail user under which the CSS will run)
The C script looks like this:
=begin text#!/bin/sh
# start and maintain the counter strike source server # copyright (c) 2006 tom@linden.at #
USER=CHANGETHIS screenname="CounterStrike" screenbase="screen -S $screenname" screenstart="-A -m -d" srcdir="/home/$USER/css" srcbin="srcds_run" srcpid="$srcdir/src.pid" slots=20 #srcplugs="-debug" srcopts="-game cstrike -pidfile $srcpid $srcplugs +map de_dust +maxplayers $slots -autoupdate" PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" myself="Counter Strike Source Server" uid="1003" ts="Team Speak 2.0.20.1 Linux Server" tsbase="/home/$USER/teamspeak" tsbin="teamspeak2-server_startscript"
runas=id -u
if test "$runas" != "$uid"; then
echo "$0 must be executed under uid $uid ($USER)!"
exit 1
fi
ts_start() { cd $tsbase ./$tsbin start }
ts_stop() { cd $tsbase ./$tsbin stop }
ts_restart() { cd $tsbase ./$tsbin restart }
ts_status() {
echo -n " TS Process: "
for pid in
ps -U $USER | grep server_linux | grep -v grep | awk '{print $1}'
; do
echo -n "$pid ";
done
echo
}
css_start() {
if test -f "$srcpid"; then
pid=cat $srcpid
if ps axu | grep $pid | grep -v grep > /dev/null 2>&1; then
echo "$myself is already running [$pid]"
exit 1
else
echo "$myself crashed. Forcing restart"
rm -f $srcpid
fi
fi
echo -n "$myself ..."
cd $srcdir && $screenbase $screenstart ./$srcbin $srcopts
echo " started."
}
css_restart() {
if test -f "$srcpid"; then
pid=cat $srcpid
if ps axu | grep $pid | grep -v grep > /dev/null 2>&1; then
echo -n "$myself ..."
kill $pid
echo " restarted."
else
echo "$myself is not running!"
rm -f $srcpid
exit 1
fi
else
echo "$myself is not running - no pidfile found!"
fi
}
css_stop() {
pid=ps -U $USER | grep srcds_run | grep -v $screenname | grep -v grep | awk '{print $1}'
if test -n "$pid"; then
kill $pid
echo "CSS Stopped"
else
echo "CSS not running"
fi
}
css_status() { echo -n "Screensession: " screen -list |grep $screenname echo -n " CSS Process: " ps -U $USER | grep $srcbin | grep -v grep | awk '{print $1, $2, $3, $4}' }
css_console() { screen -S $screenname -r }
css_paint() { clear echo echo " Counter Strike Source Server ck.daemon.de" echo echo "----------------------[ Status ]----------------------" css_status ts_status echo "----------------------[ Status ]----------------------" echo echo " 1 Counterstrike Server Console" echo " 2 Counterstrike Server Stoppen" echo " 3 Counterstrike Server Starten" echo " * 4 Counterstrike Server Neu Starten (restart)" echo " 5 Teamspeak Server Stoppen" echo " 6 Teamspeak Server Starten" echo " * 7 Teamspeak Server Neu Starten (restart)" echo " 8 Bash Command Shell" echo " q Ende" echo }
css_menu() { while :; do css_paint echo -n "> " read cmd if test -n "$cmd"; then case $cmd in 1) css_console;; 2) css_stop;; 3) css_start;; 4) css_restart;; 5) ts_stop;; 6) ts_start;; 7) ts_restart;; 8) bash;; q) exit;; *) echo "invalid input!";; esac echo -n "press any key to continue> " read enter fi done }
if test -n "$1"; then case $1 in start) css_start;; stop) css_stop;; restart) css_restart;; status) css_status;; tsstart) ts_start;; tsstop) ts_stop;; tsrestart) ts_restart;; tsstatus) ts_status;; *) echo "usage: $0 { start | stop | restart | status }" echo " $0 { tsstart | tsstop | tsrestart | tsstatus }" ;; esac else css_menu fi
=end textThis script allows to start/stop/restart the TS and CSS servers. It also provides an simple interactive menu for these jobs. Please note, the CSS server will run inside a screen session, because this crappy piece of shit doesn't detach from terminal after being started. I wonder why it's called a "server". However, you can connect anytime to this screen session and enter commands or something.
A last note: be prepared that in case you activated the autoupdate feature of CSS (which you should), you shall have a copy of the C
Finally: the whole shit is not supported. Use for your own risk. Dont ask me questions about using it on linux, other environments or the like. Instead, try to learn a little bit about unix!