Skip to content
Snippets Groups Projects
Commit 8149f2ef authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

Snmp Synology: use include file

parent 20e89ef5
No related branches found
No related tags found
1 merge request!686338 snmpv3
#!/bin/sh
# ----------------------------------------------------------------------
# Variables
# ----------------------------------------------------------------------
SNMPAUTH=
SNMPCONFIG=/etc/icinga2/snmp.cfg
SNMPCOMMUNITY="public"
SNMPVERSION="2c"
SNMPWALK=$(which snmpwalk)
SNMPGET=$(which snmpget)
SNMPTIMEOUT=3
SNMPTARGET="127.0.0.1"
# ----------------------------------------------------------------------
# FUNCTIONS
# ----------------------------------------------------------------------
# read config data for authentication; it sets the variable SNMPAUTH
# that can be used for snmpwalk / snmpget
#
# no params
#
# used global vars:
# - SNMPVERSION + SNMPCOMMUNITY to set the default
# - SNMPCONFIG - filename of the config to read
# - SNMPTARGET - SNMPTARGET (ip or fqdn) of target to connect
#
read_config(){
SNMPAUTH="-v $SNMPVERSION -c $SNMPCOMMUNITY"
if [ -r "$SNMPCONFIG" ]; then
if grep "^${SNMPTARGET}:" "$SNMPCONFIG" >/dev/null; then
SNMPAUTH="$( grep "^${SNMPTARGET}:" "$SNMPCONFIG" | cut -f 2- -d ':' )"
else
SNMPAUTH="$( grep "^DEFAULT:" "$SNMPCONFIG" | cut -f 2- -d ':' )"
fi
else
ph.setStatus "unknown"
echo "ERROR: unable to read config file [$SNMPCONFIG]."
ph.exit
fi
}
# ----------------------------------------------------------------------
......@@ -17,20 +17,13 @@
#---------------------------------------------------
. $(dirname $0)/inc_pluginfunctions
. $(dirname $0)/check_snmp_includes
# --- basic vars
self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] )
self_APPVERSION=1.2
SNMPCOMMUNITY="public"
SNMPVERSION="2c"
SNMPWALK=$(which snmpwalk)
SNMPGET=$(which snmpget)
SNMPCONFIG=/etc/icingaclient/snmp.cfg
HOSTNAME="localhost"
option_found=0
healthString=""
verbose="no"
......@@ -88,20 +81,22 @@ On higher cpu usage it can show processes that cause cpu waits and
with most cpu consumption.
SYNTAX:
$_self [options]
$_self [options] -h TARGET
OPTIONS:
-a authentication params for snmpwalk/ snmpget to connect to target;
default: \"-v2c -c public\" (Snmpv2 with community string \"public\")
-h host to connect as hostname or ip address
-f FILE
read authentication from config file
default: \"/etc/icingaclient/snmp.cfg\"
-v detailed output
-a STRING
authentication params for snmpwalk/ snmpget to connect to target;
default: \"-v2c -c public\" (Snmpv2 with community string \"public\")
-h SNMPTARGET
as fqdn or ip address; default: localhost
-f FILE
read authentication from config file
default: \"/etc/icinga2/snmp.cfg\"
-v detailed output
CONFIG FILE:
The config file can be multiline and has the syntax
[hostname]:[auth parameters]
[SNMPTARGET]:[auth parameters]
The auth parameters set the version and all needed values to connect.
Snmp v2 uses a community string.
Snmp v3 is highly recommended (you should disable Snmp v2) and needs
......@@ -114,7 +109,7 @@ CONFIG FILE:
EXAMPLE:
$_self -h server-01.example.com -v
Show Synology status of server-01 using connect data from /etc/icingaclient/snmp.cfg
Show Synology status of server-01 using connect data from /etc/icinga2/snmp.cfg
$_self -h server-01.example.com -v -f /opt/somewhere/snmp.conf
Show Synology status of server-01 using connect data from custom config
......@@ -144,21 +139,6 @@ usage()
ph.abort "$USAGE"
}
read_config(){
SNMPAUTH="-v $SNMPVERSION -c $SNMPCOMMUNITY"
if [ -r "$SNMPCONFIG" ]; then
if grep "^${HOSTNAME}:" "$SNMPCONFIG" >/dev/null; then
SNMPAUTH="$( grep "^${HOSTNAME}:" "$SNMPCONFIG" | cut -f 2- -d ':' )"
else
SNMPAUTH="$( grep "^DEFAULT:" "$SNMPCONFIG" | cut -f 2- -d ':' )"
fi
else
ph.setStatus "unknown"
echo "ERROR: unable to read config file [$SNMPCONFIG]."
ph.exit
fi
}
#---------------------------------------------------
# MAIN
......@@ -173,7 +153,7 @@ while getopts a:h:f:v OPTNAME; do
SNMPCONFIG="$OPTARG"
;;
h)
HOSTNAME="$OPTARG"
SNMPTARGET="$OPTARG"
option_found=1
;;
v)
......@@ -191,8 +171,8 @@ done
test -z "$SNMPAUTH" && read_config
# --- read raid and disks to get its single OIDs
nbDisk=$($SNMPWALK -OQne -t 10 ${SNMPAUTH} $HOSTNAME $OID_diskID 2> /dev/null | wc -l )
nbRAID=$($SNMPWALK -OQne -t 10 ${SNMPAUTH} $HOSTNAME $OID_RAIDName 2> /dev/null | wc -l)
nbDisk="$( $SNMPWALK -OQne -t $SNMPTIMEOUT ${SNMPAUTH} $SNMPTARGET $OID_diskID 2> /dev/null | wc -l )"
nbRAID="$( $SNMPWALK -OQne -t $SNMPTIMEOUT ${SNMPAUTH} $SNMPTARGET $OID_RAIDName 2> /dev/null | wc -l )"
for i in $(seq 1 $nbDisk);
do
......@@ -204,7 +184,7 @@ do
done
# --- SNPGET to all wanted oids
syno=$($SNMPGET -OQne -t 10 ${SNMPAUTH} $HOSTNAME $OID_model $OID_serialNumber $OID_DSMVersion $OID_DSMUpdateAvailable $OID_systemStatus $OID_powerStatus $OID_systemFanStatus $OID_CPUFanStatus $OID_temp $OID_disk $OID_RAID 2> /dev/null | sed 's/^[ \t]*//;s/[ \t]*$//')
syno=$($SNMPGET -OQne -t $SNMPTIMEOUT ${SNMPAUTH} $SNMPTARGET $OID_model $OID_serialNumber $OID_DSMVersion $OID_DSMUpdateAvailable $OID_systemStatus $OID_powerStatus $OID_systemFanStatus $OID_CPUFanStatus $OID_temp $OID_disk $OID_RAID 2> /dev/null | sed 's/^[ \t]*//;s/[ \t]*$//')
if [ "$?" != "0" ] ; then
ph.abort "Problem with SNMP request"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment