lisa (owner)

Revisions

gist: 34818 Download_button fork
public
Public Clone URL: git://gist.github.com/34818.git
hddtemps-daemon_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
require 'socket'
class DaemonTemperature
  include Socket::Constants
  def initialize(hostname,port = 7634)
    socket = Socket.new AF_INET,SOCK_STREAM,0
    sockaddr = Socket.pack_sockaddr_in(port,hostname)
    sock_results = ""
    begin
      socket.connect(sockaddr)
      sock_results = socket.read
    rescue Exception => e
      puts "Got Exception #{e.message}"
    ensure
      socket.close rescue true
    end
    socket = nil
    parse_disks!(sock_results)
  end
 
  def disks
    @temps.keys
  end
  def temp(disk)
    @temps[disk]
  end
 
  protected
  def parse_disks!(sock_results = "")
    groups = sock_results.gsub(/^\|/,'').gsub(/\|$/,'').split("||")
    @temps = groups.inject({}) do |t,group|
      splitted = group.split("|")
      t[splitted[0].gsub(/\/dev\//,'')] = splitted[2].to_i
      t
    end
  end
  
end