368d6fafea
Code backup
125 lines
2.1 KiB
Bash
125 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# startup checks
|
|
if [ -z "$BASH" ]; then
|
|
echo "Please use BASH."
|
|
exit 3
|
|
fi
|
|
if [ ! -e "/usr/bin/which" ]; then
|
|
echo "/usr/bin/which is missing."
|
|
exit 3
|
|
fi
|
|
snmp=$(which snmpwalk)
|
|
if [ $? -ne 0 ]; then
|
|
echo "Please install snmpwalk"
|
|
exit 3
|
|
fi
|
|
|
|
# Default Values
|
|
community="pal-ro"
|
|
version="2"
|
|
more=""
|
|
|
|
# State Variables
|
|
STATE_OK=0
|
|
STATE_WARN=1
|
|
STATE_CRIT=2
|
|
STATE_UNK=3
|
|
|
|
# Default Outputs
|
|
STATE=$STATE_OK
|
|
STATE_STRING=""
|
|
PERFDATA=""
|
|
|
|
# Usage Info
|
|
usage() {
|
|
echo '''
|
|
Usage: check_snmp [OPTIONS]
|
|
[OPTIONS]
|
|
|
|
-p PORT Port to send the snmp request to (default: 161)
|
|
-N COMMUNITY SNMP community name (default: public)
|
|
-H HOST Hostname to send SNMP queries to
|
|
-o OID SNMP OID to query
|
|
-V VERSION SNMP Version (default: 2)
|
|
-M MORE When using -V 3, pass all required snmpwalk parameters
|
|
with -M, i.E. "-u user -a MD5 -A 72d0815....D38 -x AES"
|
|
|
|
-w WARNING Defines limit for WARNING
|
|
-c CRITICAL Defines limit for CRITICAL
|
|
'''
|
|
}
|
|
|
|
#main
|
|
#get options
|
|
while getopts "p:N:H:o:V:M:W:C:w:c:" opt; do
|
|
case $opt in
|
|
port=$OPTARG
|
|
;;
|
|
N)
|
|
community=$OPTARG
|
|
;;
|
|
H)
|
|
host=$OPTARG
|
|
;;
|
|
o)
|
|
oid=$OPTARG
|
|
;;
|
|
V)
|
|
version=$OPTARG
|
|
;;
|
|
M)
|
|
more=$OPTARG
|
|
;;
|
|
w)
|
|
warning=$OPTARG
|
|
;;
|
|
c)
|
|
critical=$OPTARG
|
|
;;
|
|
*)
|
|
usage
|
|
exit 3
|
|
;;
|
|
esac
|
|
done
|
|
|
|
#required paramters
|
|
if [ -z "$host" ]; then
|
|
echo "Error: host is required"
|
|
usage
|
|
exit 3
|
|
fi
|
|
if [ -z "$oid" ]; then
|
|
echo "Error: oid is required"
|
|
usage
|
|
exit 3
|
|
fi
|
|
|
|
if ! [[ "$version" =~ ^[0-9]+$ ]]; then
|
|
echo "Error: -V must be 1 , 2 or 3"
|
|
usage
|
|
exit 3
|
|
fi
|
|
if [ $version -lt 1 ] || [ $version -gt 3 ]; then
|
|
echo "Error: -V must be 1 , 2 or 3"
|
|
usage
|
|
exit 3
|
|
fi
|
|
oversion=$version
|
|
if [ $version -eq 2 ];then
|
|
version="-v2c"
|
|
elif [ $version -eq 1 ]; then
|
|
version="-v1"
|
|
fi
|
|
|
|
if [ $oversion -eq 3 ] ; then
|
|
rtr=$(snmpwalk $version -c $community $host $oid)
|
|
fi
|
|
status=$?
|
|
|
|
rtr=$(echo $rtr | cut -d " " -f 4)
|
|
|
|
echo "Value is: $rtr"
|
|
|
|
exit 0 |