-
-
Save cdowebcast/7ac446e4442c07091be77b73b1bb4110 to your computer and use it in GitHub Desktop.
Simple Nagios plugin to check on a SHOUTCast V2 server -- Based on 'Check SHOUTcast Server' by ChrisWi/Juliano Jeziorny
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Nagios shoutcast plug-in | |
# By Juliano Jeziorny ([email protected]) | |
# Rev 0.1 | |
# 23/11/2010 | |
# ********************************************************* | |
# Modified and adapted for Shoutcast 2 to parse xml stats | |
# and detect unconnected source | |
# Rev 0.2 by Keijo D. Putt | |
# 07-Dec-2017 | |
WARN=128 # default Warning threshold if none is specified | |
ALER=96 # default Alert threshold if none is specified | |
SOUR=1 # Enable source reporting if none is specified | |
CURL=`which curl` # you can also specify the full path to curl | |
[[ -z $CURL ]] && exit 3 # if curl is not present exit with unknown error | |
XML2=`which xml2` # We need XML2 to parse the stats output | |
[[ -z $XML2 ]] && exit 3 # Exit with unknown if we can't find xml2 | |
while getopts ":H:p:w:a:s" OPT; do # check supplied arguments | |
case $OPT in | |
H ) HOST=$OPTARG;; | |
p ) PORT=$OPTARG;; | |
w ) WARN=$OPTARG;; | |
a ) ALER=$OPTARG;; | |
s ) SOUR=$OPTARG;; | |
esac | |
done | |
if [[ -n $HOST && -n $PORT ]] # test if minimum required arguments are present | |
then | |
STR=`$CURL http://$HOST:$PORT/stats -A Mozilla/4.0 -s -m 5` # access stats on the specified host:port | |
case $? in | |
0 ) ;; | |
6 ) echo "Invalid Host"; exit 1;; | |
7 ) echo "SHOUTCAST ALERT - Failed to connect to host on port $PORT"; exit 2;; | |
* ) echo "SHOUTCAST UNKNOWN - Unknown error"; exit 3;; | |
esac | |
STA=`echo $STR | $XML2 | grep /SHOUTCASTSERVER/STREAMSTATUS= | sed 's/.*=//'` # source connected | |
if [[ "$STA" -ne 1 ]] && [[ "$SOUR" -eq 1 ]] | |
then | |
echo "SHOUTCast CRITICAL - No source connected on port $PORT" ; exit 2 # When source reporting is enabled (1) check will trip if there is no source connected | |
fi | |
CUR=`echo $STR | $XML2 | grep /SHOUTCASTSERVER/CURRENTLISTENERS= | sed 's/.*=//'` # current listenens | |
MAX=`echo $STR | $XML2 | grep /SHOUTCASTSERVER/MAXLISTENERS= | sed 's/.*=//'` # max listeners | |
TOP=`echo $STR | $XML2 | grep /SHOUTCASTSERVER/PEAKLISTENERS= | sed 's/.*=//'` # listeners peak | |
LEVEL="OK" && EXIT=0 # if we got to this point with no error assume level is OK | |
[[ "$CUR" -ge "$WARN" ]] && LEVEL="WARNING" && EXIT=1 # current listeners higher than warning threshold? | |
[[ "$CUR" -ge "$ALER"-1 ]] && LEVEL="ALERT" && EXIT=2 # listeners count higher than alarm threshold? | |
echo "SHOUTCast $LEVEL - $CUR out of $MAX listeners (peak: $TOP) on $HOST:$PORT" | |
exit $EXIT | |
fi | |
echo "Usage: | |
check_shoutcast -H <ip address> -p <port> | |
[-w warning level (default 96 listeners)] [-a alert level (default 128 listeners)]" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment