diff --git a/check_snmp_synology b/check_snmp_synology index b01b4bc55924cc7dc4d741e4a6e52f83764c1786..2f9c8a2885e3fb8cffbb2b1fbeba1fbc803ff9d0 100755 --- a/check_snmp_synology +++ b/check_snmp_synology @@ -147,27 +147,33 @@ EXAMPLE: # FUNCTIONS # ---------------------------------------------------------------------- -# --- write verbose text +# write verbose text with details in 2 columns +# param string label +# param string value _wd() { if [ "$verbose" = "yes" ] ; then - out="${out}$* -" ; fi + _label=$1 + shift 1 + out+=$( printf "%-25s %s" "${_label}" "$*" )" +" + fi } -# --- get a value from SNMP output data +# get a value from SNMP output data # param string mib string _get(){ echo "$SNMPOUTPUT" | grep "${1} " | cut -d "=" -f2 | cut -f 2- -d " " } -# --- show usage +# show usage and abort usage() { ph.abort "$USAGE" } # disable all flags to perform single checks +# see param check in main section _disableflags(){ if [ $FLAG_SINGLECHECK -ne 1 ]; then FLAG_SINGLECHECK=1 @@ -250,10 +256,9 @@ fi # --- SNPGET to all wanted oids OIDLIST="" -test $FLAG_SYSTEM -ne 0 && OIDLIST+="$OID_model $OID_serialNumber $OID_DSMVersion $OID_systemStatus $OID_powerStatus $OID_systemFanStatus $OID_CPUFanStatus " +test $FLAG_SYSTEM -ne 0 && OIDLIST+="$OID_model $OID_serialNumber $OID_DSMUpdateAvailable $OID_DSMVersion $OID_systemStatus $OID_powerStatus $OID_systemFanStatus $OID_CPUFanStatus " test $FLAG_DISK -ne 0 && OIDLIST+="$OID_disk $OID_RAID " -test $FLAG_UPDATE -ne 0 && OIDLIST+="$OID_DSMUpdateAvailable " -test $FLAG_UPDATE -ne 0 && test $FLAG_SYSTEM -eq 0 && OIDLIST+="$OID_DSMVersion " +test $FLAG_UPDATE -ne 0 && test $FLAG_SYSTEM -eq 0 && OIDLIST+="$OID_DSMUpdateAvailable $OID_DSMVersion " test $FLAG_TEMPERATURE -ne 0 && OIDLIST+="$OID_temp " @@ -270,16 +275,36 @@ _wd "" # ---------- check system data if [ $FLAG_SYSTEM -ne 0 ]; then + _wd "---------- INFORMATION" model=$(_get $OID_model) - _wd "Synology model: $model" + _wd "Synology model:" "$model" serialNumber=$(_get $OID_serialNumber) - _wd "Synology s/n: $serialNumber" + _wd "Synology s/n:" "$serialNumber" DSMVersion=$(_get $OID_DSMVersion) - _wd "DSM Version: $DSMVersion" + _wd "DSM Version:" "$DSMVersion" - _add_status "Synology $model (s/n: $serialNumber, $DSMVersion)" + _add_status " Synology $model (s/n: $serialNumber, $DSMVersion)" +fi + +# ---------- check update +if [ $FLAG_SYSTEM -ne 0 -o $FLAG_UPDATE -ne 0 ]; then + typeset -i DSMupdate=$(_get $OID_DSMUpdateAvailable) + + # test $FLAG_SINGLECHECK -ne 0 || ( _wd "Update available: ${aStatusUpgrade[$DSMupdate]} ($DSMupdate)"; _wd "" ) + _wd "Update available:" "${aStatusUpgrade[$DSMupdate]} ($DSMupdate)" + _wd "" + if [ $DSMupdate -eq 1 ] ; then + ph.setStatus "warning" + _add_status "Update available" + else + test $FLAG_SINGLECHECK -ne 0 && _add_status "Up to date" + fi +fi + +if [ $FLAG_SYSTEM -ne 0 ]; then + _wd "---------- SYSTEM" # --- Check system status systemStatus="$(_get $OID_systemStatus)" @@ -291,7 +316,7 @@ if [ $FLAG_SYSTEM -ne 0 ]; then else systemStatus="Normal" fi - _wd "System Status: $systemStatus" + _wd "System Status:" "$systemStatus" # --- Check power status powerStatus="$(_get $OID_powerStatus)" @@ -303,7 +328,7 @@ if [ $FLAG_SYSTEM -ne 0 ]; then else powerStatus="Normal" fi - _wd "Power Status: $powerStatus" + _wd "Power Status:" "$powerStatus" # --- Check system fan status @@ -315,7 +340,7 @@ if [ $FLAG_SYSTEM -ne 0 ]; then else systemFanStatus="Normal" fi - _wd "System Fan Status: $systemFanStatus" + _wd "System Fan Status:" "$systemFanStatus" # --- Check CPU fan status @@ -327,36 +352,20 @@ if [ $FLAG_SYSTEM -ne 0 ]; then else CPUFanStatus="Normal" fi - _wd "CPU Fan Status: $CPUFanStatus" - _wd "" + _wd "CPU Fan Status:" "$CPUFanStatus" fi # ---------- check temperature if [ $FLAG_TEMPERATURE -ne 0 ]; then # --- Show temperature DeviceTemperature=$(_get $OID_temp) - _wd "NAS temperature: $DeviceTemperature °C" - _wd "" + _wd "NAS temperature:" "$DeviceTemperature °C" if [ $FLAG_SINGLECHECK -ne 0 ]; then _add_status "NAS temperature: $DeviceTemperature °C" ph.perfadd "temp" "$DeviceTemperature" fi -fi - -# ---------- check update -if [ $FLAG_UPDATE -ne 0 ]; then - typeset -i DSMupdate=$(_get $OID_DSMUpdateAvailable) - - # test $FLAG_SINGLECHECK -ne 0 || ( _wd "Update available: ${aStatusUpgrade[$DSMupdate]} ($DSMupdate)"; _wd "" ) - _wd "Update available: ${aStatusUpgrade[$DSMupdate]} ($DSMupdate)"; - _wd "" - if [ $DSMupdate -eq 1 ] ; then - ph.setStatus "warning" - _add_status "Update available" - else - test $FLAG_SINGLECHECK -ne 0 && _add_status "Up to date" - fi + test $FLAG_DISK -ne 0 && _wd "" fi # ---------- Check all disk status + volume + raid @@ -365,7 +374,8 @@ if [ $FLAG_DISK -ne 0 ]; then RAIDStatus=$(_get $OID_RAIDStatus) DISKOK=1 - _wd "Number of disks: $nbDisk" + _wd "---------- STORAGE" + _wd "Number of disks:" "$nbDisk" for i in $(seq 1 $nbDisk); do diskID[$i]=$(_get $OID_diskID.$(($i-1))) @@ -382,13 +392,13 @@ if [ $FLAG_DISK -ne 0 ]; then _add_status "problem with ${diskID[$i]} (model:${diskModel[$i]}) status:${diskStatus[$i]} temperature:${diskTemp[$i]} °C" fi - _wd "${diskID[$i]} (model:${diskModel[$i]}) status: ${diskStatus[$i]} ($idiskStatus) temperature: ${diskTemp[$i]} °C" + _wd " ${diskID[$i]} (model:${diskModel[$i]}) status: ${diskStatus[$i]} ($idiskStatus) temperature: ${diskTemp[$i]} °C" done # --- Check all RAID volume status _wd "" - _wd "Number of RAID volume: $nbRAID" + _wd "Number of RAID volumes:" "$nbRAID" for i in $(seq 1 $nbRAID); do RAIDName[$i]=$(_get $OID_RAIDName.$(($i-1))) @@ -406,7 +416,7 @@ if [ $FLAG_DISK -ne 0 ]; then ph.setStatus "critical" _add_status "RAID status: ($RAIDName ): $RAIDStatus[$i] " fi - _wd "${RAIDName[$i]} status: ${RAIDStatus[$i]} ($iRAIDStatus) - size $iRAIDSize GB, free $iRAIDFree GB (${iFree}%)" + _wd " ${RAIDName[$i]} status: ${RAIDStatus[$i]} ($iRAIDStatus) - size $iRAIDSize GB, free $iRAIDFree GB (${iFree}%)" done if [ $DISKOK -eq 1 ]; then