Added supported for all games supported by qstat. Version 0.3.

This commit is contained in:
Jack-Benny Persson 2012-02-19 01:56:46 +01:00
parent 5576a5384f
commit 52e476b769
2 changed files with 198 additions and 12 deletions

94
README
View File

@ -1,8 +1,8 @@
check_quake.sh
This is a Nagios plugin to monitor Quake servers. Currently only Quake II
servers are supported, but more games will be added in the future.
This plugin uses qstat to do all the queries.
This is a Nagios plugin to monitor game servers.
The plugin uses qstat to do all the queries.
All games that are supported by qstat works with check_quake.
The plugin complies with the Nagios Plugin Development Guidelines. It has
some basic sanity checks, uses the default exit codes, follows the standard
arguments, has only one line of output etc.
@ -11,6 +11,7 @@ The plugin is in use by myself to monitor a friends Quake II server and is
working nicely.
Options:
-h
Print detailed help screen
@ -21,6 +22,93 @@ Options:
-p
Set the port number of the Quake server to watch
Default is 27910
--game
Set the gametype to be monitored. Default is Quake 2 (q2s)
Any game supported by qstat works. See the list below:
a2s Half-Life 2 new server
ams America's Army v2.x server
bfs BFRIS server
odm Call of Duty Master server
cods Call of Duty server
crs Command and Conquer: Renegade server
d3g Descent3 Gamespy Protocol server
d3m Descent3 Master (PXO) server
d3p Descent3 PXO protocol server
d3s Descent3 server
dm3m Doom 3 Master server
dm3s Doom 3 server
efm Star Trek: Elite Force server
efs Star Trek: Elite Force server
eye All Seeing Eye Protocol server
fcs FarCry server
gps Gamespy Protocol server
grs Ghost Recon server
gs2 Gamespy V2 Protocol server
gs3 Gamespy V3 Protocol server
gs4 Gamespy V4 Protocol server
gsm Gamespy Master server
h2s Hexen II server
hl2s Half-Life 2 server
hla2s Half-Life server
hla2sm Steam Master server
hlm Half-Life Master server
hlqs Half-Life server
hls Half-Life server
hrs Heretic II server
hws HexenWorld server
jk3m Jedi Knight: Jedi Academy server
jk3s Jedi Knight: Jedi Academy server
kps Kingpin server
maqs Medal of Honor: Allied Assault (Q) server
mas Medal of Honor: Allied Assault server
mhs Medal of Honor: Allied Assault server
netp NetPanzer server
netpm NetPanzer Master server
nexuizm Nexuiz Master server
nexuizs Nexuiz server
preym Prey Master server
preys PREY server
prs Pariah server
q2m Quake II Master server
q2s Quake II server
q3m Quake III Master server
q3s Quake III: Arena server
q4m Quake 4 Master server
q4s Quake 4 server
qs Quake server
qwm QuakeWorld Master server
qws QuakeWorld server
rss Ravenshield server
rwm Return to Castle Wolfenstein Master server
rws Return to Castle Wolfenstein server
sas Savage server
sfs Soldier of Fortune server
sgs Shogo: Mobile Armor Division server
sms Serious Sam server
sns Sin server
sof2m SOF2 Master server
sof2m1.0 SOF2 Master (1.0) server
sof2s Soldier of Fortune 2 server
stm Steam Master server
stma2s Steam Master for A2S server
stmhl2 Steam Master for HL2 server
t2m Tribes 2 Master server
t2s Tribes 2 server
tbm Tribes Master server
tbs Tribes server
tm TrackMania server
tremulous Tremulous server
tremulousm Tremulous Master server
ts2 Teamspeak 2 server
uns Unreal server
ut2004m UT2004 Master server
ut2004s UT2004 server
ut2s Unreal Tournament 2003 server
warsowm Warsow Master server
warsows Warsow server
woetm Enemy Territory Master server
woets Enemy Territory server
--warning
Issue a warning state instead of a critical state
Default is critical

View File

@ -22,14 +22,15 @@
###############################################################################
# #
# Nagios plugin to monitor a Quake II server. #
# Nagios plugin to monitor a game server. #
# All games supported by qstat works. #
# The plugin exit with a CRICITAL error code if the server is down. #
# This behavior can be changed with the --warning argument. #
# Written in Bash (and uses standard tools such as grep and awk). #
# #
###############################################################################
VERSION="0.2"
VERSION="0.3"
AUTHOR="(c) 2012 Jack-Benny Persson (jack-benny@cyberinfo.se)"
# Qstat binary
@ -43,6 +44,7 @@ STATE_UNKNOWN=3
# Some default values
PORT=27910
GAME="q2s"
shopt -s extglob
@ -67,7 +69,7 @@ print_help()
{
print_version
printf "$AUTHOR\n"
printf "Monitor a Quake II server\n"
printf "Monitor a game server\n"
/bin/cat <<EOT
Options:
@ -78,8 +80,94 @@ Options:
-H
Set the host/IP of the server to watch
-p
Set the port number of the Quake server to watch
Default is 27910
Set the port number of the game server to watch
Default is 27910 (Quake 2)
--game
Set the game to be monitored. Default is Quake 2 (q2s)
Any game supported by qstat works. See the list below:
a2s Half-Life 2 new server
ams America's Army v2.x server
bfs BFRIS server
odm Call of Duty Master server
cods Call of Duty server
crs Command and Conquer: Renegade server
d3g Descent3 Gamespy Protocol server
d3m Descent3 Master (PXO) server
d3p Descent3 PXO protocol server
d3s Descent3 server
dm3m Doom 3 Master server
dm3s Doom 3 server
efm Star Trek: Elite Force server
efs Star Trek: Elite Force server
eye All Seeing Eye Protocol server
fcs FarCry server
gps Gamespy Protocol server
grs Ghost Recon server
gs2 Gamespy V2 Protocol server
gs3 Gamespy V3 Protocol server
gs4 Gamespy V4 Protocol server
gsm Gamespy Master server
h2s Hexen II server
hl2s Half-Life 2 server
hla2s Half-Life server
hla2sm Steam Master server
hlm Half-Life Master server
hlqs Half-Life server
hls Half-Life server
hrs Heretic II server
hws HexenWorld server
jk3m Jedi Knight: Jedi Academy server
jk3s Jedi Knight: Jedi Academy server
kps Kingpin server
maqs Medal of Honor: Allied Assault (Q) server
mas Medal of Honor: Allied Assault server
mhs Medal of Honor: Allied Assault server
netp NetPanzer server
netpm NetPanzer Master server
nexuizm Nexuiz Master server
nexuizs Nexuiz server
preym Prey Master server
preys PREY server
prs Pariah server
q2m Quake II Master server
q2s Quake II server
q3m Quake III Master server
q3s Quake III: Arena server
q4m Quake 4 Master server
q4s Quake 4 server
qs Quake server
qwm QuakeWorld Master server
qws QuakeWorld server
rss Ravenshield server
rwm Return to Castle Wolfenstein Master server
rws Return to Castle Wolfenstein server
sas Savage server
sfs Soldier of Fortune server
sgs Shogo: Mobile Armor Division server
sms Serious Sam server
sns Sin server
sof2m SOF2 Master server
sof2m1.0 SOF2 Master (1.0) server
sof2s Soldier of Fortune 2 server
stm Steam Master server
stma2s Steam Master for A2S server
stmhl2 Steam Master for HL2 server
t2m Tribes 2 Master server
t2s Tribes 2 server
tbm Tribes Master server
tbs Tribes server
tm TrackMania server
tremulous Tremulous server
tremulousm Tremulous Master server
ts2 Teamspeak 2 server
uns Unreal server
ut2004m UT2004 Master server
ut2004s UT2004 server
ut2s Unreal Tournament 2003 server
warsowm Warsow Master server
warsows Warsow server
woetm Enemy Territory Master server
woets Enemy Territory server
--warning
Issue a warning state instead of a critical state
Default is critical
@ -127,6 +215,16 @@ while [[ -n "$1" ]]; do
shift 2
;;
--game)
if [[ -z "$2" ]]; then
printf "\nOption $1 requires an argument\n"
print_help
exit $STATE_UNKNOWN
fi
GAME=$2
shift 2
;;
--warning)
warning="yes"
shift 1
@ -162,21 +260,21 @@ fi
### MAIN ###
#Test if the server is up and running
QSTAT_TEST=`quakestat -u -default q2s ${HOST}:${PORT} | grep "${HOST}"`
QSTAT_TEST=`quakestat -u -default ${GAME} ${HOST}:${PORT} | grep "${HOST}"`
#Let's see if the above command was succesful or not
if [[ $? == 0 ]]; then
printf "Q2 on port $PORT - OK\n"
printf "${GAME} on port $PORT - OK\n"
exit $STATE_OK
#See if we wanted a warning instead of a critical
elif [[ "$warning" == "yes" ]]; then
printf "Q2 on port $PORT - WARNING\n"
printf "${GAME} on port $PORT - WARNING\n"
exit $STATE_WARNING
#Critical
else
printf "Q2 on port $PORT - CRITICAL\n"
printf "${GAME} on port $PORT - CRITICAL\n"
exit $STATE_CRITICAL
fi