diff options
author | Peter Palfrader <peter@palfrader.org> | 2014-09-03 11:37:35 +0200 |
---|---|---|
committer | Peter Palfrader <peter@palfrader.org> | 2014-09-03 11:37:35 +0200 |
commit | 8e233f74d3e218de01003a88a4e34d681001f712 (patch) | |
tree | 954ee162cfe99eadfeee565dbe6a00abf034857c /nagios-check-owfs-temp | |
parent | 82f0e5970523d4d35e0d4b5bcc016d835d8a6ef1 (diff) |
Move files around
Diffstat (limited to 'nagios-check-owfs-temp')
-rwxr-xr-x | nagios-check-owfs-temp | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/nagios-check-owfs-temp b/nagios-check-owfs-temp deleted file mode 100755 index f7e938d..0000000 --- a/nagios-check-owfs-temp +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/ruby -# -# Copyright (c) 2006,2007 Peter Palfrader -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -require 'optparse' - -NAGIOS_STATUS = { :OK => 0, :WARNING => 1, :CRITICAL => 2, :UNKNOWN => -1 }; - -$owfs_path = '/var/lib/owfs' -$owfs_path = ENV['OWFSPATH'] if ENV['OWFSPATH'] - -def bail_out(m) - STDERR.puts "#{$0}: #{m}" - exit 1 -end - -def runcmd(command, input) - rdin , wrin = IO.pipe - rdout, wrout = IO.pipe - rderr, wrerr = IO.pipe - - pid = fork - unless pid - # child - wrin.close - rdout.close - rderr.close - STDIN.reopen rdin - STDOUT.reopen wrout - STDERR.reopen wrerr - exec(*command) - throw("fell through exec(). WTF.") - end - rdin.close - wrout.close - wrerr.close - - out = [] - err = [] - tin = Thread.new { wrin.print input; wrin.close } - tout = Thread.new { out = rdout.readlines } - terr = Thread.new { err = rderr.readlines } - tin.join - tout.join - terr.join - Process.wait pid - - exitstatus = $?.exitstatus - - [exitstatus, out, err] -end - -def report(device) - Process.gid=0 - Process.egid=0 - - # fuse does weird checks. this fails: - # File.new($owfs_path+'/'+device+'/temperature', "r") ---> FAILS: in `initialize': Permission denied - /var/lib/owfs/10.D234EE000800/temperature (Errno::EACCES) - - # Sometimes the directory in OWFS does not exist, and cat will say - # cat: /var/lib/owfs/10.D234EE000800/temperature: Invalid argument - # so retry it a few times, since ls'ing the directory helps on the command line at least - 5.times do - exitstatus, out, err = runcmd(['cat', $owfs_path+'/'+device+'/temperature'], '') - if exitstatus != 0 - STDERR.puts "Child exited with non-zero exit code(%d): %s"%[exitstatus >> 8, err.join] - runcmd(['ls', $owfs_path], '') - sleep 1 - else - STDERR.puts "command succeeded but returned something on stderr: #{err.join}" if err.size > 0 - return out.join.to_f - end - end - puts "Could not get data for #{device}." - exit NAGIOS_STATUS[:UNKNOWN]; -end - - -@lowcrit = 10; -@lowwarn = 15; -@highwarn = 25; -@highcrit = 30; - -def show_help(parser, code=0, io=STDOUT) - program_name = File.basename($0, '.*') - io.puts "Usage: #{program_name} [options]" - io.puts parser.summarize - exit(code) -end -ARGV.options do |opts| - opts.on_tail("-h", "--help" , "Display this help screen") { show_help(opts) } - opts.on("-d", "--device=<ow device>" , String, "Device ID") { |x| @device = x } - opts.on("-n", "--name=<name>" , String, "Human readable device specifier") { |x| @name = x } - opts.on("-w", "--high-warn=integer" , Integer, "Upper warning limit") { |x| @highwarn = x } - opts.on("-c", "--high-crit=integer" , Integer, "Upper critical limit") { |x| @highcrit = x } - opts.on("-W", "--low-warn=integer" , Integer, "Lower warning limit") { |x| @lowwarn = x } - opts.on("-C", "--low-crit=integer" , Integer, "Lower critical limit") { |x| @lowcrit = x } - opts.parse! -end -show_help(ARGV.options, 1, STDERR) if ARGV.length != 0 -show_help(ARGV.options, 1, STDERR) unless @device - -@name = @device unless @name; - -temp = report @device - - -if temp > @highcrit or temp < @lowcrit - puts "CRITICAL: device #{@name} is at #{temp}" - exit NAGIOS_STATUS[:CRITICAL] -elsif temp > @highwarn or temp < @lowwarn - puts "WARN: device #{@name} is at #{temp}" - exit NAGIOS_STATUS[:WARNING] -else - puts "OK: device #{@name} is at #{temp}" - exit NAGIOS_STATUS[:OK] -end |