diff --git a/check_netstat b/check_netstat index 5a9a7a92d27689a1ec05fcd07f8b4049cf045277..4d38b7ff717cbb31261d27b378a052d747115842 100755 --- a/check_netstat +++ b/check_netstat @@ -8,12 +8,50 @@ # # ---------------------------------------------------------------------- # 2020-07-08 v1.0 <axel.hahn@iml.unibe.ch> +# 2022-10-25 v1.1 <axel.hahn@unibe.ch> shell fixes; no tmpfiles; IML look # ====================================================================== -. `dirname $0`/inc_pluginfunctions +. $(dirname $0)/inc_pluginfunctions +self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) +self_APPVERSION=1.1 +# ---------------------------------------------------------------------- +# functions +# ---------------------------------------------------------------------- + +function showHelp(){ +cat <<EOF +______________________________________________________________________ + +$self_APPNAME +v$self_APPVERSION + +(c) Institute for Medical Education - University of Bern +Licence: GNU GPL 3 +______________________________________________________________________ + +Count number of network connections. + +SYNTAX: +$(basename $0) [ -w value -c value -h ] + + -w VALUE cpu usage warning level (default: 75) + -c VALUE cpu usage critical level (default: 90) + -h or --help show this help. + +PARAMETERS: + + None. + +EXAMPLE: +$(basename $0) -w 60 -c 80 -p 40 + +If there is no -w and -c then the result is always OK. + +EOF +} # ---------------------------------------------------------------------- # MAIN # ---------------------------------------------------------------------- @@ -22,32 +60,28 @@ ph.require netstat # --- check param -h -if [ "$1" = "-h" ]; then - echo " - usage: $0 [ -w value -c value -h ] - - -w Warning count (optional) - -c Critical count (optional; must be larger than warning) - -h this help - - If there is no -w and -c then the result is always OK. - " - exit 0 -fi +case "$1" in + "--help"|"-h") + showHelp + exit 0 + ;; + *) +esac # --- set optional limits -typeset -i iWarnLimit=` ph.getValueWithParam 0 w "$@"` -typeset -i iCriticalLimit=` ph.getValueWithParam 0 c "$@"` - +typeset -i iWarnLimit=$( ph.getValueWithParam 0 w "$@") +typeset -i iCriticalLimit=$( ph.getValueWithParam 0 c "$@") # --- count all connections -tmpfile1=`mktemp` -tmpfile=`mktemp` +typeset -i iTotal=0 +typeset -i iEst=0 +typeset -i iListen=0 +typeset -i iWait=0 -(netstat -wltun; netstat -wtun) | awk '{ print $6 }' | grep -E '(ESTABLISHED|LISTEN|TIME_WAIT)' >$tmpfile1 -typeset -i iTotal=`wc -l $tmpfile1 | awk '{ print $1 }'` +netdata=$( (netstat -wltun; netstat -wtun) | awk '{ print $6 }' | grep -E '(ESTABLISHED|LISTEN|TIME_WAIT)' ) +iTotal=$( echo "$netdata" | wc -l | awk '{ print $1 }') -if [ $iWarnLimit -gt 0 -a $iCriticalLimit -gt 0 ]; then +if [ $iWarnLimit -gt 0 -a $iCriticalLimit -gt 0 ]; then ph.setStatusByLimit $iTotal $iWarnLimit $iCriticalLimit fi @@ -55,17 +89,20 @@ ph.status "NETSTAT - count of connections: $iTotal" # --- add performance data -cat $tmpfile1 | sort | uniq -c >$tmpfile +data2=$( echo "$netdata" | sort | uniq -c ) # result is something like that: # 5 ESTABLISHED # 10 LISTEN # 77 TIME_WAIT +echo "$data2" -ph.perfadd "established" "`grep ESTABLISHED $tmpfile | awk '{ print $1 }' `" -ph.perfadd "listen" "`grep LISTEN $tmpfile | awk '{ print $1 }' `" -ph.perfadd "time-wait" "`grep TIME_WAIT $tmpfile | awk '{ print $1 }' `" +iEst=$( echo "$data2" | grep ESTABLISHED | awk '{ print $1 }' ) +iListen=$( echo "$data2" | grep LISTEN | awk '{ print $1 }' ) +iWait=$( echo "$data2" | grep TIME_WAIT | awk '{ print $1 }' ) +ph.perfadd "established" "$iEst" +ph.perfadd "listen" "$iListen" +ph.perfadd "time-wait" "$iWait" # --- bye -rm -f $tmpfile $tmpfile1 ph.exit