Search
j0ke.net Open Build Service
>
Projects
>
server:monitoring
>
nagios-plugins-ipmi
> check_ipmi_sensors
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File check_ipmi_sensors of Package nagios-plugins-ipmi
#!/bin/bash # # check_ipmi: Only checks temperatures and fan speeds. No voltages to # speak of in the computers I have. # # WARNING: Nagios has a 10 second timeout on plugins. On some hosts # ipmitool takes longer than that to probe all your hardware. In this # case this plugin us unusable. # # Donated to the public domain by Nicolai Langfeldt (janl@linpro.no) # ipmitool sensor | gawk -F'|' ' BEGIN { EXIT=0; MSG[0]="OK: "; MSG[1]="WARNING: "; MSG[2]="CRITICAL: "; } # Remove extraneous spaces to make output prettyer { gsub(/\t/," "); gsub(/ +/," "); gsub(/ +\|/,"|"); gsub(/\| +/,"|") } # Skip lines with 0x0 in first column /^[^|]+\|0x0\|/ { next; }; # Skip lines with na in first column /^[^|]+\|na\|/ { next; }; # Parse temperatures /degrees C/ { THING=$1; TEMP=$2; OK=$4; if (OK ~ /ok/) { MSG[0] = sprintf("%s %s is %dC, ",MSG[0] , THING,TEMP); next; } WARN=$8; CRIT=$9; if (CRIT !~ /na/ && TEMP>=CRIT) { MSG[2] = sprintf("%s %s is %dC (max %d) ", MSG[2], THING, TEMP, CRIT); EXIT=2; next; } if (WARN !~ /na/ && TEMP>=WARN) { MSG[1] = sprintf("%s %s is %dC (max %dC, critical at %dC) ", MSG[1], THING, TEMP, CRIT); if (EXIT=0) EXIT=1; next; } # Fall through, all we know is that temp is not OK. MSG[2] = sprintf("%s %s is %d (%s) ", MSG[2], THING, TEMP, OK); if (EXIT=0) EXIT=1; } /RPM/ { THING=$1; SPEED=$2; OK=$4; if (OK ~ /ok/) { MSG[0] = sprintf("%s %s is at %d RPM, ",MSG[0], THING, SPEED); next; } MIN=$6; if (MIN !~ /na/ && SPEED<MIN) { MSG[2] = sprintf("%s %s is %dC (min %d) ", MSG[2], THING, SPEED, MIN); EXIT=2; next; } # Fall through, all we know is that speed is not OK. MSG[2] = sprintf("%s %s is %d (%s) ", MSG[2], THING, SPEED, OK); if (EXIT=0) EXIT=1; } END { gsub(/, *$/,"",MSG[EXIT]); print MSG[EXIT]; exit EXIT; } '