FWIW… here’s one I wrote… it isn’t useful in its present
state to others since it relies upon a database of servers
we keep, but should give an idea of how to write a generic
one.
[slick@nd80-198-100 servers]$ cat poll_et.sh | more
#/bin/sh
# $1 = the name of the server to poll and restart (e.g. notredame-ettest)
RESTART="./server.sh $1 polled"
# get the settings for this server
BLINE=`grep $1 bindings.dat`
if [ $? -ne 0 ]
then
echo ""
echo No settings found for server $1 in bindings.dat.
echo ""
exit
fi
NAME=`echo $BLINE | cut -f 1 -d ' '`
IP=`echo $BLINE | cut -f 2 -d ' '`
PORT=`echo $BLINE | cut -f 3 -d ' '`
while [ 1 ]
do
sleep 300 # do the wait here to let server get started
QLINE=`qstat -nh -rws $IP:2796$PORT`
echo "`date` $QLINE" | grep fueldump
if [ $? -ne 0 ]
then
date
echo $QLINE
echo "server $NAME might be dead... waiting 60 seconds and trying again."
sleep 60
QLINE=`qstat -nh -rws $IP:2796$PORT`
echo "$QLINE" | grep fueldump
if [ $? -eq 0 ]
then
echo "Server seems to be OK."
else
echo $QLINE
echo "Server is dead"
PSLINE=`ps ax --width 1000 | grep etded.x86 | grep $NAME`
echo $PSLINE
PID=`echo "$PSLINE" | grep set | awk '{ print $1 }'`
# if etded is really running
if [ "$PID" != "" ]
then
echo need to kill PID $PID
kill $PID
fi
echo "restart"
echo "pwd is `pwd`"
echo "executing: $RESTART"
$RESTART
exit
fi
fi
done
Here’s the database it uses…
[slick@nd80-198-100 servers]$ cat bindings.dat
######################## bindings.dat ###################
#
# $Id: bindings.dat,v 1.14 2003/05/10 15:30:15 slick Exp $
#
# format: key ip single-digit-port(0=>game=27960,pb=9000) Active=Y/N sv_hostname
#
blueandgold-ettest 207.44.198.100 2 Y "^3[^4ND80^3]^4Blue ^3Gold - ET"
blueandgold-shrubmod 207.44.230.85 1 N "^3[^4ND80^3]^4Blue ^3Gold"
calcomp-osp 207.44.246.63 5 Y "^3[^4ND80^3]^4CAL ^3Competition ^4Only (OSP 0.83)"
fightingirish-shrubmod 207.44.246.63 0 Y "^3[^4ND80^3]^4Fighting^3Irish"
goldendome-shrubmod 207.44.246.63 1 Y "^3[^4ND80^3]^4Golden ^3Dome"
jackies-ettest 207.44.246.63 2 Y "^3[^4ND80^3]^4Jackie's ^3Server - ET"
joemontana-shrubmod 207.44.206.51 1 Y "^3[^4ND80^3]^4Joe ^3Montana"
knuterockne-ettest 207.44.206.51 2 Y "^3[^4ND80^3]^4Knute ^3Rockne - ET"
knuterockne-shrubmod 207.44.206.51 0 N "^3[^4ND80^3]^4Knute ^3Rockne"
notredame-ettest 207.44.230.85 2 Y "^3[^4ND80^3]^4Notre ^3Dame - ET"
ndwannabe-ettest 207.44.246.63 2 N "^3[^4ND80^3]^4Jackie's ^3Server - ET"
ourlady-shrubmod 207.44.246.63 3 Y "^3[^4ND80^3]^4Our ^3Lady"
osppublic-osp 207.44.198.100 5 N "^3[^4ND80^3] something OSP something"
rudyrudy-shrubmod 207.44.182.7 5 Y "^3[^4ND80^3]^4Rudy ^3Rudy"
rtcw-wolftactics 207.44.182.7 0 Y "^3[^4ND80^3]^4Wolf^3Tactics"
sacredheart-ettest 207.44.246.63 4 Y "^3[^4ND80^3]^4Sacred ^3Heart - ET"
thegrotto-ettest 207.44.246.63 6 Y "^3[^4ND80^3]^4The ^3Grotto - ET"
test-shrubmod 207.44.246.63 8 T "^3[^4ND80^3]^4shrubmod ^3test"
test-ettest 207.44.246.63 9 T "^3[^4ND80^3]^4ettest ^3test"
Finally… here’s a sample of its output…
Sun May 4 16:30:25 EDT 2003 207.44.198.100:27962 24/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 16:35:25 EDT 2003 207.44.198.100:27962 21/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 16:40:24 EDT 2003 207.44.198.100:27962 22/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 16:45:24 EDT 2003 207.44.198.100:27962 24/24 fueldump 20 / 0 ettest [ND80]Blue Gold
Sun May 4 16:50:24 EDT 2003 207.44.198.100:27962 23/24 fueldump 1 / 0 ettest [ND80]Blue Gold
Sun May 4 16:55:24 EDT 2003 207.44.198.100:27962 21/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:00:26 EDT 2003
207.44.198.100:27962 no response
server blueandgold-ettest might be dead... waiting 60 seconds and trying again.
207.44.198.100:27962 no response
Server is dead
23228 pts/0 RN 140:02 ./etded.x86 +set fs_homepath /home/ND80serv/servers/s 19901 ? SN 0:00 grep etded.x8
6
need to kill PID 23228
restart
pwd is /home/ND80serv/servers
executing: ./server.sh blueandgold-ettest polled
Starting ettest server blueandgold-ettest on 207.44.198.100 with ports 27962/9002
screen succesfully launched
There is a screen on:
19934.blueandgold-ettest-207.44.198.100-27962-9002 (Multi, detached)
1 Socket in /tmp/screens/S-slick.
Starting poll at Sun May 4 17:01:31 EDT 2003
Sun May 4 17:06:31 EDT 2003 207.44.198.100:27962 1/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:11:31 EDT 2003 207.44.198.100:27962 0/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:16:31 EDT 2003 207.44.198.100:27962 0/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:21:31 EDT 2003 207.44.198.100:27962 0/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:26:31 EDT 2003 207.44.198.100:27962 0/24 fueldump 0 / 0 ettest [ND80]Blue Gold
Sun May 4 17:31:31 EDT 2003 207.44.198.100:27962 0/24 fueldump 0 / 0 ettest [ND80]Blue Gold
SiliconSlick