|
|
|
@ -25,8 +25,10 @@ admin = @conf['admin']
|
|
|
|
|
@tunit = @conf['units']
|
|
|
|
|
|
|
|
|
|
## Non-configurable
|
|
|
|
|
@simplehot = 75
|
|
|
|
|
@simplecold = 50
|
|
|
|
|
#@simplehot = 75
|
|
|
|
|
#@simplecold = 50
|
|
|
|
|
@simplehot = 24
|
|
|
|
|
@simplecold = 10
|
|
|
|
|
|
|
|
|
|
### Begin sanity check ###
|
|
|
|
|
STDOUT.sync = true
|
|
|
|
@ -126,7 +128,15 @@ if @tunit.nil?
|
|
|
|
|
puts "Error(#{errcount.to_s}): Temperature units not configured! Defaulting to Rankine. Continuing...\n\n"
|
|
|
|
|
@tunit = 'R'
|
|
|
|
|
else
|
|
|
|
|
case @tunit
|
|
|
|
|
when "C", "F", "K", "R"
|
|
|
|
|
print "OK\n".green.bold
|
|
|
|
|
else
|
|
|
|
|
errcount += 1
|
|
|
|
|
print "FAIL!\n\n".red.bold
|
|
|
|
|
puts "Error(#{errcount.to_s}): Temperature unit '#{@tunit}' not recognized! Defaulting to Rankine. Continuing...\n\n"
|
|
|
|
|
@tunit = 'R'
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
print "Checking probes list .................... "
|
|
|
|
|
if @probes.nil?
|
|
|
|
@ -179,7 +189,9 @@ end
|
|
|
|
|
class String
|
|
|
|
|
def is_integer?
|
|
|
|
|
/\A[-+]?\d+\z/ === self
|
|
|
|
|
#!!(self =~ /\A[-+]?[0-9]+\z/)
|
|
|
|
|
end
|
|
|
|
|
def is_float?
|
|
|
|
|
/^\s*[+-]?((\d+_?)*\d+(\.(\d+_?)*\d+)?|\.(\d+_?)*\d+)(\s*|([eE][+-]?(\d+_?)*\d+)\s*)$/ === self
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
def process_tdata(host, simple=false)
|
|
|
|
@ -187,8 +199,23 @@ def process_tdata(host, simple=false)
|
|
|
|
|
STDOUT.flush
|
|
|
|
|
if system("nmap #{host} -p 22 2>&1 | grep 22 | grep open >/dev/null")
|
|
|
|
|
tdata = `ssh -oBatchMode=yes #{host} heatbot_gettemp`
|
|
|
|
|
if tdata.is_integer?
|
|
|
|
|
print tdata + "°#{@tunit}"
|
|
|
|
|
#if tdata.is_integer?
|
|
|
|
|
if tdata.is_float?
|
|
|
|
|
tdf = tdata.to_f
|
|
|
|
|
case @tunit
|
|
|
|
|
when "C"
|
|
|
|
|
#Do nothing; expected input is Celsius
|
|
|
|
|
when "F"
|
|
|
|
|
tdf = (tdf * 1.8) + 32
|
|
|
|
|
when "K"
|
|
|
|
|
tdf = tdf + 273.15
|
|
|
|
|
when "R"
|
|
|
|
|
tdf = (tdf * 1.8) + 491.67
|
|
|
|
|
else
|
|
|
|
|
puts "#{@tunit} not valid temperature unit! Submitting unmodified output!"
|
|
|
|
|
end
|
|
|
|
|
ctdata = tdf.round.to_s
|
|
|
|
|
print ctdata + "°#{@tunit}" + " (" + "Raw: ".bold + "#{tdata})"
|
|
|
|
|
if simple #This is mostly just an Easter egg
|
|
|
|
|
if tdata.to_i > @simplehot
|
|
|
|
|
sdata = "Hot"
|
|
|
|
@ -203,7 +230,7 @@ def process_tdata(host, simple=false)
|
|
|
|
|
else
|
|
|
|
|
print "\n"
|
|
|
|
|
STDOUT.flush
|
|
|
|
|
return tdata + "°#{@tunit}"
|
|
|
|
|
return ctdata + "°#{@tunit}"
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
puts "Unexpected output from [".red.bold + host.bold + "]: ".red.bold + tdata
|
|
|
|
|