Skip to content
Snippets Groups Projects
check_snmp_printer 2.83 KiB
#!/bin/env bash
# ============================================================
#
# Wrapper for check_snmp_printer plugin
#
# The reason behind this wrapper is detecting the snmp auth
# parameters by check_dnmp_includes which needs a snmp target
# to find its custom config.
# 
# All given params will be sent to
# /usr/lib64/nagios/plugins/check_snmp_printer_v2.0.1
# except "-c <script>"
#
# TODO: IML like help
#
# USAGE
#   check_snmp_printer -H <host|ip>             --<what>
#   check_snmp_printer -H <host|ip> -c <script> --<what>
#
#     <host>|<ip>   target to connect
#     <what>        what information will be shown
#                   --consum
#                   --messages
#                   --pagecount
#                   --trays
#     <script>      script to execute with full path
#
# ------------------------------------------------------------
# 2021-03-22  <axel.hahn@iml.unibe.ch>  v0.1
# 2023-09-18  <axel.hahn@iml.unibe.ch>  v0.2  snmpv3 support
# 2023-10-12  <axel.hahn@iml.unibe.ch>  v0.3  parameter for custom script; detect debian
# ============================================================

# ------------------------------------------------------------
# CONFIG
# ------------------------------------------------------------

. $( dirname $0 )/inc_pluginfunctions
. $( dirname $0 )/check_snmp_includes

debug=0

# check='/usr/lib64/nagios/plugins/check_snmp_printer'
# updated script is taken from https://github.com/Tylan/check_snmp_printer/tree/master
nagiosDir='/usr/lib64/nagios/plugins'
myscript="check_snmp_printer_v2.0.1"
case "$( ph.getOS)" in
        debian)
                nagiosDir='/usr/lib/nagios/plugins'
                ;;
esac

# ------------------------------------------------------------
# MAIN
# ------------------------------------------------------------

sParams="$*"

# find host behind param -H
SNMPTARGET=$( echo $sParams | sed -Ee 's#.*\-H\ ([0-9a-z\.\-]*).*#\1#' )

# detect -c <script>
check=$(      echo $sParams | sed -Ee 's#.*\-c\ ([0-9a-z\.\-_/]*).*#\1#' )
test "$check" = "$sParams" && check="${nagiosDir}/${myscript}"
test "$check" = "$sParams" || sParams=$( echo $sParams | sed -Ee 's#\-c\ ([0-9a-z\.\-_/]*)##' )

# find SNMPTARGET in config
test -z "$SNMPAUTH" && read_config
sParams+=" $SNMPAUTH"


what=$( echo $sParams | sed -Ee 's#.*\-\-([a-z]*).*#\1#' )
case "$what" in
        consum)
                what="Consumables"
                ;;
        messages)
                what="Messages of the printer"
                ;;
        pagecount)
                what="Number of printed pages"
                ;;
        trays)
                what="Status of trays for paper"
                sParams="$sParams --nofeeder"
                ;;
esac

test "$debug" = "1" && ( echo "$what:"; echo calling $check $sParams ; echo ) 
$check $sParams -t $SNMPTIMEOUT

# ------------------------------------------------------------