forked from vpenso/collectd-exec-plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathipmi-temperature.rb
executable file
·48 lines (41 loc) · 1.53 KB
/
ipmi-temperature.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env ruby
#---------------------------------------------------------------
##
## IPMI Collectd Exec Plugin
##
## This is free software: you can redistribute it
## and/or modify it under the terms of the GNU General Public
## License as published by the Free Software Foundation,
## either version 3 of the License, or (at your option) any
## later version.
##
## This program is distributed in the hope that it will be
## useful, but WITHOUT ANY WARRANTY; without even the implied
## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
## PURPOSE. See the GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public
## License along with this program. If not, see
##
## <http://www.gnu.org/licenses/>.
##
##----------------------------------------------------------------
## Author: Victor Penso
## Copyright 2012
## Version: 0.1
##----------------------------------------------------------------
hostname = ENV.has_key?('COLLECTD_HOSTNAME') ? ENV['COLLECTD_HOSTNAME'] : 'localhost'
interval = ENV.has_key?('COLLECTD_INTERVAL') ? ENV['COLLECTD_INTERVAL'].to_i : 60
def temperature
`sudo ipmitool sensor | grep "System Temp" | cut -d'|' -f2,7,8`.split('|').map { |t| t.strip }
end
# run until we get killed by a mother program
while true
time = `date +%s`.chop
# post data to the caller program
$stdout.puts %Q[PUTVAL #{hostname}/ipmi/ipmi_temperature interval=#{interval} #{time}:#{temperature.join(':')}]
# clear output buffer before sleeping
$stdout.flush
sleep interval
end
exit 0